我绝不是一个经验丰富的Python程序员,这就是为什么我相信这个问题可能有一个明显的答案,但我就是无法理解struct.pack和unpack。我有以下代码:struct.pack("<"+"I"*elements, *self.buf[:elements]) 我想反转它的打包,但是我不知道如何反转,我知道“<”表示小端,“I”是无符号整数,仅此而已,我不知道如何使用 struct.unpack 反转打包。
2 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
struct.pack获取非字节值(例如整数、字符串等)并将它们转换为bytes. 相反,struct.unpack将bytes它们转换为“高阶”等价物。
例如:
>>> from struct import pack, unpack
>>> packed = pack('hhl', 1, 2, 3)
>>> packed
b'\x00\x01\x00\x02\x00\x00\x00\x03'
>>> unpacked = unpack('hhl', packed)
>>> unpacked
(1, 2, 3)
因此,在您的实例中,您有小端无符号整数(elements其中很多)。您可以使用相同的结构字符串(部分'<' + 'I' * elements)解压它们 - 例如struct.unpack('<' + 'I' * elements, value)。
示例来自: https: //docs.python.org/3/library/struct.html
www说
TA贡献1775条经验 获得超8个赞
查看文档: https: //docs.python.org/3/library/struct.html
obj = struct.pack("<"+"I"*elements, *self.buf[:elements]) struct.unpack("<"+"I"*elements, obj)
这对你有用吗?
- 2 回答
- 0 关注
- 147 浏览
添加回答
举报
0/150
提交
取消