私のシステムのエンディアンは少し、
>>> struct.pack('i',70691357)
'\x1d\xaa6\x04'
>>> int("0x436aa1d",16)
70691357
0x436aa1d を覆すことは1d a a6 43
ありません 1d a a6 04
が、その理由は何ですか?
私のシステムのエンディアンは少し、
>>> 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
ありord('6') = 0x36
ます。バイトを逆にしてまとめると、0x0436aa1d になります。
きれいな印刷出力が必要な場合は、使用できますbinascii.hexlify()
>>> import binascii
>>> binascii.hexlify(struct.pack('i',70691357))
'1daa3604'
このようなワンライナーを使用して、値に関係なく文字列のバイトを 16 進数で表示できます。
def hexify(s):
return ''.join(map(lambda c: '\\x{:02x}'.format(ord(c)), s))
print hexify(struct.pack('i', 70691357)) # \x1d\xaa\x36\x04