earph0n3's doc Help

struct模块

在python中, 提供了 struct 模块来与二进制数据进行交互以及操作

使用时需要导入模块后使用:

import struct

这里介绍几个常用方法, 后面会用到:

struct.pack(format, data)

struct.pack() 方法能够将 dataformat 的格式打包成二进制数据

其中 format 的可选项有:

字符

字节顺序

大小

对齐方式

@

按原字节

按原字节

按原字节

=

按原字节

标准

<

小端

标准

>

大端

标准

!

网络(=大端)

标准

data = 123456 packed_data = struct.pack(">I", data) print(packed_data) # 结果是 b'\x00\x01\xe2@'

这里尝试将 123456 以整数形式打包为大端序四字节二进制数据, 结果应该是 b'\x00\x01\xe2\x40', 这里print自动把 \x40 解码成 @ 了,不用管

struct.unpack(format, data)

struct.unpack() 方法能将二进制数据解包成对应的数据, 参数的用法与 pack 一致,

其返回值是一个元组 (因为unpack的设计初衷是解包多个数据, 哪怕只解包一个数据 )

比如我们需要将上面打包的二进制数据进行解包, 得到原来的 123456

data = b'\x00\x01\xe2@' data_unpacked = struct.unpack(">I", data) print(data_unpacked) # 结果是 (123456,) print(data_unpacked[0]) # 结果是 123456
22 十月 2024