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).

示例来自:https://docs.python.org/3/library/struct.html