为了账号安全,请及时绑定邮箱和手机立即绑定

Python struct.pack 和 unpack

Python struct.pack 和 unpack

PHP
牧羊人nacy 2023-11-09 20:13:36
我绝不是一个经验丰富的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


查看完整回答
反对 回复 2023-11-09
?
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)

这对你有用吗?


查看完整回答
反对 回复 2023-11-09
  • 2 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信