我有一个整数形式的数字,我需要将其转换为4个字节并将其存储在列表中。我正在尝试在python中使用struct模块,但无法使其工作:
struct.pack("i",34);
当我期望要打印的二进制等效项时,它将返回0。预期产量:
[0x00 0x00 0x00 0x22]
但是struct.pack返回的是空的。我究竟做错了什么?
输出以字节字符串形式返回,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] 删除。
我来说两句