0

私のシステムのエンディアンは少し、

>>> 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あり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

このようなワンライナーを使用して、値に関係なく文字列のバイトを 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
于 2012-09-05T09:55:23.250 に答える