在python中使用struct pack

user2578666:

我有一个整数形式的数字,我需要将其转换为4个字节并将其存储在列表中。我正在尝试在python中使用struct模块,但无法使其工作:

struct.pack("i",34);

当我期望要打印的二进制等效项时,它将返回0。预期产量:

[0x00 0x00 0x00 0x22]

但是struct.pack返回的是空的。我究竟做错了什么?

马丁·彼得斯(Martijn Pieters):

输出以字节字符串形式返回,Python会在可能的情况下将诸如ASCII字符的字符串打印出来:

>>> import struct
>>> struct.pack("i", 34)
b'"\x00\x00\x00'

请注意开头的引号,即ASCII码点34:

>>> ord('"')
34
>>> hex(ord('"'))
'0x22'
>>> struct.pack("i", 34)[0]
34

请注意,在Python 3中,bytes类型是整数序列,每个值都在0到255之间,因此在上一个示例中建立索引会为显示为的字节生成整数值"

有关Python字节字符串的更多信息,请参见python字符串之前的ab前缀是什么意思?

如果您希望顺序颠倒,则可能需要指示字节顺序

>>> struct.pack(">i",34)
b'\x00\x00\x00"'

其中>表示大尾数对齐方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章