0

Mysystem 字节序很小,

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

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

4

3 回答 3

2

打印出来的字符串应该被解释为0x1d 0xaa ord('6') 0x04, where ord('6') = 0x36。反转字节并将其放在一起会产生 0x0436aa1d。

于 2012-09-05T02:38:44.487 回答
2

如果你想要一个漂亮的打印输出,你可以使用binascii.hexlify()

>>> import binascii
>>> binascii.hexlify(struct.pack('i',70691357))
'1daa3604'
于 2012-09-05T03:25:55.923 回答
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
于 2012-09-05T09:55:23.250 回答