[Python] Python struct模块学习

本文介绍了Python的struct模块,用于处理二进制数据。详细讲解了struct.pack、unpack方法及格式规范字符串,包括字节顺序、大小和对齐。通过示例展示了如何将数据打包写入二进制文件以及从文件中读取解包数据。
摘要由CSDN通过智能技术生成

struct模块

struct模块用于将Python中的bytes类型对象和C语言中的struct进行转换,一般用于处理存储在文件或网络中的二进制文件,使用struct模块时需要指定一个格式规范,来对字节大小、顺序、对齐等进行约束。

常用方法:

struct.pack(fmt,v1,v2,…):以一个struct格式化字符串以及一个或多个值为参数,返回一个bytes对象,其中存放的是按照该格式规范表示的所有的这些参数值。
struct.unpack(fmt,buffer):以一个格式规范和一个bytes/bytearray对象为参数(缓冲区),返回一个元组,缓冲区的大小必须和格式规范fmt保持一致。
struct.calcsize(fmt):返回格式规范fmt的大小,和pack()打包后的bytes对象大小一致。

格式规范字符串

格式字符串是在打包和解包数据时用于指定预期布局的机制,它们由格式字符构成,它指定了打包/解压缩数据的类型。另外,还有用于控制字节顺序,大小和对齐的特殊字符。指定的一些值如下,下表来自于python官方文档,更多细节请参考Python官方文档struct模块

Format C Type Python type Standard size Notes
x pad byte no value
c char bytes of length 1 1
b signed char integer 1 (1),(3)
B unsigned char integer 1 (3)
? _Bool bool 1 (1)
h short integer 2 (3)
H unsigned short integer 2 (3)
i int integer 4 (3)
I unsigned int integer 4
l long integer 4 (3)
L unsigned long integer 4 (3)
q long long integer 8 (2), (3)
Q unsigned long long 8 (2), (3)
n ssize_t integer (4)
N size_t integer integer (4)
e (7) float 2 (5)
f float float 4 (5)
d double float 8 (5)
s char[] bytes
p char[] bytes
P void *</
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值