struct.unpack
是 Python 标准库中 struct
模块的一个函数,用于解析由 bytes
对象表示的打包的二进制数据。它返回一个元组,包含根据格式字符串解析后的值。格式字符串由格式字符组成,这些字符指定了待解析数据的类型和字节顺序。
常见格式字符:
b
: 有符号字符B
: 无符号字符h
: 有符号短整数H
: 无符号短整数i
: 有符号整数I
: 无符号整数l
: 有符号长整数L
: 无符号长整数q
: 有符号长长整数Q
: 无符号长长整数f
: 浮点数d
: 双精度浮点数s
: 字符串p
: 字符指针x
: 填充字节此外,格式字符串还可以包含以下字符来指定字节顺序和大小:
@
: 本机顺序(native order)和大小(size)=
: 本机顺序,但标准大小<
: 小端序(little-endian)>
: 大端序(big-endian)!
: 网络顺序(总是大端序)import struct
# 打包一个无符号短整数 (2 bytes, big-endian)
packed_data = struct.pack('>H', 4321)
# 使用 unpack 解析打包的数据
unpacked_data = struct.unpack('>H', packed_data)
# 输出解析后的结果
print(unpacked_data[0]) # 输出: 4321
# 打包一个有符号整数 (4 bytes, little-endian) 和一个浮点数 (4 bytes, little-endian)
packed_data = struct.pack('
import struct
# 打包一个长度为10的字符串(字符串不足10个字符时,会用空字节填充)
packed_data = struct.pack('10s', b'hello')
# 解析打包的数据
unpacked_data = struct.unpack('10s', packed_data)
# 输出解析后的结果(结果包含空字节,需要处理)
print(unpacked_data[0]) # 输出: b'hello\x00\x00\x00\x00\x00'
# 去除空字节
print(unpacked_data[0].strip(b'\x00').decode('utf-8')) # 输出: hello