Python struct.pack 并解压
Python struct.pack and unpack
我绝不是一位经验丰富的 python 程序员,这就是为什么我相信对此可能有一个明显的答案,但我就是无法绕过 struct.pack 并解压。
我有以下代码:
struct.pack("<"+"I"*elements, *self.buf[:elements])
我想反转包装,但我不确定如何,我知道“<”表示小端,“I”是无符号整数,仅此而已,我不确定如何使用 struct.unpack 反转包装。
查看文档:https://docs.python.org/3/library/struct.html
obj = struct.pack("<"+"I"*elements, *self.buf[:elements])
struct.unpack("<"+"I"*elements, obj)
这对你有用吗?
struct.pack
获取 non-byte 值(例如整数、字符串等)并将它们转换为 bytes
。相反,struct.unpack
接受 bytes
并将它们转换为 'higher-order' 等价物。
例如:
>>> 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)
所以在您的实例中,您有 little-endian 个无符号整数(elements
个无符号整数)。您可以使用相同的结构字符串( '<' + 'I' * elements
部分)解压缩它们 - 例如struct.unpack('<' + 'I' * elements, value)
.
我绝不是一位经验丰富的 python 程序员,这就是为什么我相信对此可能有一个明显的答案,但我就是无法绕过 struct.pack 并解压。 我有以下代码:
struct.pack("<"+"I"*elements, *self.buf[:elements])
我想反转包装,但我不确定如何,我知道“<”表示小端,“I”是无符号整数,仅此而已,我不确定如何使用 struct.unpack 反转包装。
查看文档:https://docs.python.org/3/library/struct.html
obj = struct.pack("<"+"I"*elements, *self.buf[:elements])
struct.unpack("<"+"I"*elements, obj)
这对你有用吗?
struct.pack
获取 non-byte 值(例如整数、字符串等)并将它们转换为 bytes
。相反,struct.unpack
接受 bytes
并将它们转换为 'higher-order' 等价物。
例如:
>>> 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)
所以在您的实例中,您有 little-endian 个无符号整数(elements
个无符号整数)。您可以使用相同的结构字符串( '<' + 'I' * elements
部分)解压缩它们 - 例如struct.unpack('<' + 'I' * elements, value)
.