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