2

3892Python では、指定された format と result を使用して、整数を 16 進数に変換したいと考えています\x00\x00\x0F\x34。これはどのように達成できますか?

4

3 に答える 3

8

16 進数表現ではなく、数値の 2 進数表現に変換しています (ただし、Python はバイトを 16 進数として表示します)。このような変換にはstructモジュールを使用してください。

デモンストレーション:

>>> struct.pack('>I', 3892)
'\x00\x00\x0f4'
>>> struct.pack('>I', 4314)
'\x00\x00\x10\xda'

「4」の ASCII コードは 0x34 であることに注意してください。Python\xは、印刷できない文字の場合、エスケープ付きのバイトのみを表示します。0x34 は印刷可能であるため、python は4代わりにそれを出力します。

上記のフォーマット コードの '>' は 'ビッグ エンディアン' を意味し、'I' は unsigned int 変換 (4 バイト) を意味します。

于 2012-07-27T07:31:24.930 に答える
2
import re
print re.sub(r'([0-9A-F]{2})',r'\\x\1','%08X' % 3892)

与えます:

\x00\x00\x0F\x34
于 2012-07-27T09:07:37.367 に答える
1

numpy がインストールされている場合:

>>> import numpy as np
>>> np.int32(3892).tostring()
'4\x0f\x00\x00'
于 2012-07-27T07:50:50.137 に答える