4

整数値を 16 進値の文字列にリトルエンディアンで変換したいと考えています。たとえば、5707435436569584000になり'\x4a\xe2\x34\x4f\x4a\xe2\x34\x4f'ます。

私のgooglefuが私のために見つけているのは、私が望むものではないものを hex(..)私に与えることだけです。'0x4f34e24a4f34e180'

おそらく手動でその文字列を分割して、必要な文字列を作成することもできますが、誰かがより良いオプションを教えてくれることを願っています.

4

2 に答える 2

16

structモジュールを使用する必要があります:

>>> import struct
>>> struct.pack('<Q', 5707435436569584000)
'\x80\xe14OJ\xe24O'
>>> struct.pack('<Q', 5707435436569584202)
'J\xe24OJ\xe24O'

ここで<はリトルエンディアンを示しQ、unsigned long long (8 バイト) をパックすることを示します。

14OJPython は、結果のバイト文字列を表すために24O、印刷可能な ASCII 範囲内にある任意のバイトに ASCII 文字を使用することに注意してくださいJ

>>> struct.pack('<Q', 5707435436569584202).encode('hex')
'4ae2344f4ae2344f'
>>> '\x4a\xe2\x34\x4f\x4a\xe2\x34\x4f'
'J\xe24OJ\xe24O'
于 2012-10-30T15:03:22.880 に答える