Mysystem endian很少,
>>> struct.pack('i',70691357)
'\x1d\xaa6\x04'
>>> int("0x436aa1d",16)
70691357
推翻0x436aa1d 1d a a6 43
不是1d a a6 04
,原因是什么?
答案 0 :(得分:2)
打印出的字符串应解释为0x1d
0xaa
ord('6')
0x04
,其中ord('6') = 0x36
。反转字节并将它们放在一起会产生0x0436aa1d。
答案 1 :(得分:2)
如果您想要漂亮的打印输出,可以使用binascii.hexlify()
>>> import binascii
>>> binascii.hexlify(struct.pack('i',70691357))
'1daa3604'
答案 2 :(得分:0)
您可以像这样使用单行显示十六进制字符串的字节,无论其值如何:
def hexify(s):
return ''.join(map(lambda c: '\\x{:02x}'.format(ord(c)), s))
print hexify(struct.pack('i', 70691357)) # \x1d\xaa\x36\x04