python中的小端

时间:2012-09-05 02:22:34

标签: python

Mysystem endian很少,

>>> struct.pack('i',70691357)
'\x1d\xaa6\x04'
>>> int("0x436aa1d",16)
70691357

推翻0x436aa1d 1d a a6 43不是1d a a6 04,原因是什么?

3 个答案:

答案 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