我绝不是一个经验丰富的python程序员,这就是为什么我相信可能有一个显而易见的答案,但我只是不能把我的头围绕着struct.pack和解包。我有以下代码:
struct.pack("<"+"I"*elements, *self.buf[:elements])
我想扭转这个包装,但我不知道如何,我知道"<“指的是小endian和"I”是没有签名的int,就这样,我不知道如何使用struct.unpack来逆转包装。
发布于 2020-10-14 22:30:42
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)因此,在您的实例中,您有很少的endian无符号整数(elements,其中许多)。您可以使用相同的结构字符串( '<' + 'I' * elements部件)来解压缩它们,例如struct.unpack('<' + 'I' * elements, value)。
发布于 2020-10-14 22:30:41
查看文档:https://docs.python.org/3/library/struct.html
obj = struct.pack("<"+"I"*elements, *self.buf[:elements])
struct.unpack("<"+"I"*elements, obj)这个对你有用吗?
https://stackoverflow.com/questions/64362290
复制相似问题