Python处理字节串:struct.pack和struct.unpack使用
作者:Robin_Pi
这篇文章主要介绍了Python处理字节串:struct.pack和struct.unpack使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
1. struct
struct
是用来解决bytes和其他二进制数据类型的转换的模块,它使得流的操作变得非常简单,完美解决了Python没有字节数据类型的尴尬。
主要功能:
- Python数据类型 ——> “字节串”
- “字节串” ——> Python数据类型
struct.pack
struct的pack函数把任意数据类型变成bytes
使用格式:
struct.pack(format, v1, v2, ...)
其中,format
为设置的构建格式,后面有几个输入的值,就设置几个格式字符(后文2.2,当然也可以额外增加2.1的格式)。
例子:
struct.pack('>I', 10240099)
返回生成的字节串b'\x00\x9c@c'
struct.unpack
unpack把bytes变成相应的Python数据类型
使用格式:
struct.unpack(format, buffer)
其中,format
为设置的构建格式,这个部分与pack有所不同。
例子:
struct.unpack('>IH', b'\xf0\xf0\xf0\xf0\x80\x80')
返回一个元组(4042322160, 32896)
2. 格式
格式字符串是用来在打包和解包数据时指定预期布局的机制。
它们使用指定被打包/解包数据类型的格式字符 进行构建。
此外,还有一些特殊字符用来控制 字节顺序,大小和对齐方式。
2.1 字节顺序,大小和对齐方式
注:
1、本机字节顺序可能为大端或是小端,取决于主机系统的不同
2、标准大小仅取决于格式字符
2.2 格式字符
参考: Python 官方文档:struct — 将字节串解读为打包的二进制数据
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。