struct模块中的函数

函数 return explain
pack(fmt,v1,v2…) string 按照给定的格式(fmt),把数据转换成字符串(字节流),并将该字符串返回.
pack_into(fmt,buffer,offset,v1,v2…) None 按照给定的格式(fmt),将数据转换成字符串(字节流),并将字节流写入以offset开始的buffer中.(buffer为可写的缓冲区,可用array模块)
unpack(fmt,v1,v2……) tuple 按照给定的格式(fmt)解析字节流,并返回解析结果
pack_from(fmt,buffer,offset) tuple 按照给定的格式(fmt)解析以offset开始的缓冲区,并返回解析结果
calcsize(fmt) size of fmt 计算给定的格式(fmt)占用多少字节的内存,注意对齐方式

格式化字符串

当打包或者解包的时,需要按照特定的方式来打包或者解包.该方式就是格式化字符串,它指定了数据类型,除此之外,还有用于控制字节顺序、大小和对齐方式的特殊字符.

对齐方式

为了同c中的结构体交换数据,还要考虑c或c++编译器使用了字节对齐,通常是以4个字节为单位的32位系统,故而struct根据本地机器字节顺序转换.可以用格式中的第一个字符来改变对齐方式.

定义如下

Character Byte order Size Alignment
@(默认) 本机 本机
= 本机 标准
< 小端 标准
> 大端 标准
! network(大端) 标准
Python 学习交流 QQ群:579817333

格式符

格式符 C语言类型 Python类型 Standard size
x pad byte(填充字节) no value
c char string of length 1 1
b signed char integer 1
B unsigned char integer 1
? _Bool bool 1
h short integer 2
H unsigned short integer 2
i int integer 4
I(大写的i) unsigned int integer 4
l(小写的L) long integer 4
L unsigned long long 4
q long long long 8
Q unsigned long long long 8
f float float 4
d double float 8
s char[] string
p char[] string
P void * long

注意:

  • _Bool在C99中定义,如果没有这个类型,则将这个类型视为char,一个字节;
  • q和Q只适用于64位机器;
  • 每个格式前可以有一个数字,表示这个类型的个数,如s格式表示一定长度的字符串,4s表示长度为4的字符串;4i表示四个int;
  • P用来转换一个指针,其长度和计算机相关;
  • f和d的长度和计算机相关;

python struct模块的使用相关推荐

  1. [转载] Python: struct 模块之字节对齐问题

    参考链接: Python中的struct模块 P y t h o n Python Python 在二进制写文件时,可以用 s t r u c t struct struct 模块将数据捆绑成结构体转 ...

  2. python struct 模块

    Python没有提供直接的将用户定义的数据类型和文件IO关联起来的功能,但是它提供了struct库(是一个内置库)--我们可以以二进制模式来写这些数据(有趣的是,它真的是设计来讲文本数据写为缓存的) ...

  3. python struct模块_python struct 模块

    struct模块用于二进制和结构体之间的互相转化,此模块中大部分函数接受一个实现了Buffer协议的对象,最常见的实现了Buffer协议的对象包括bytes.bytearray等,大多数像byte数组 ...

  4. Python - struct模块、partical模块

    #partical方法胡定函数第一个参数 #可以使用iter迭代,但是配合iter使用要指定两个参数  #struct.pack()/unpack()只打包/解包四个字节(编码ASCII,虽然是ASC ...

  5. 用python将照片做成数据集_python实战项目,struct模块的使用,将MNIST数据集转换为bmp图片...

    最近学习 tensroflow,用到了入门级的经典数据集 MNIST,MNIST 包含几万张 28x28 像素大小的手写数字.但是它的存储是以字节流的形式存储的,几万张图片存储在一个文件里.一直对其很 ...

  6. python中struct_Python的Struct模块,用法以及个人理解

    简介 python strtuct模块主要在Python中的值于C语言结构之间的转换.可用于处理存储在文件或网络连接(或其它来源)中的二进制数据. 顺序.格式字符 现在先不要看图表,稍后我们回来看.图 ...

  7. Python基础教程— Struct模块

    struct模块提供了用于在字节字符串和Python原生数据类型之间转换函数,比如数字和字符串. 该模块作用是完成Python数值和C语言结构体的Python字符串形式间的转换. 这可以用于处理存储在 ...

  8. python序列化模块struct_python的struct模块

    Python中缺少类似C语言structs这样直接对字节序列进行序列化和反序列化的语法,作为一门脚本语言这是不必要的,但作为一门完整的编程语言必须提供这样的能力,否则不能独立的处理二进制文件和数据流. ...

  9. python学习day32 黏包 struct模块

    为什么会出现黏包问题?  首先只有在TCP协议中才会出现黏包现象 是因为TCP协议是面向流的协议 在发送的数据 传输过程中 有缓存机制 来避免数据丢失 因此 在连续发送小数据的时候 以及接收大小不符的 ...

最新文章

  1. 3.4.1 流量控制与可靠传输机制
  2. 写markdown用于Github上readme.md文件
  3. maven 导入数据库
  4. Moment.js常见用法总结 1
  5. SpringCloud 微服务网关Gateway介绍及简单路由配置
  6. Moss 2007 入门(1) - 功能概述【转】
  7. 配置SQL Server AlwaysOn高可用性组
  8. [Win系统][临时方案]系统任务管理器不能使用临时性解决方案
  9. 每日算法系列【LeetCode 714】买卖股票的最佳时机含手续费
  10. 考研复习计划怎么做?MindManager来帮你!
  11. python中的main函数
  12. 聊聊Dotnetty
  13. 用acts_as_paranoid 做假删除
  14. node: rimraf : 无法加载文件 C:\Users\goodDream\AppData\Roaming\npm\rimraf.ps1,因为在
  15. 现在能聊天的机器人都有哪些?
  16. php 直接调用ffmpeg 中加水印,如何使用ffmpeg在视频中心添加透明水印?
  17. php json_decode gbk,,json_decode含gbk字串
  18. 在Linux7关机命令,linux关机命令 【使用指南】
  19. steam无法连接到更新服务器的问题
  20. ipvs命令~创建VS/NAT模式集群

热门文章

  1. cinder配置多ceph储存池[Ceph and Cinder multi-backend]
  2. Cocostudio 1.6 下载地址
  3. android interview 2
  4. 如何成为强大的程序员?(转)
  5. CISSP考试通过,现在开始接受各种恭喜。[10-50]
  6. FreeBSD portupgrade升级你的FreeBSD软件[zt]
  7. Win XP系统的开机菜单具体含义
  8. 经常关注的、极具参考价值的网站收集(无限畅想版)
  9. 【实用】批量成本估算
  10. 计划订单号码范围用完导致MRP无法运行