3892
Python では、指定された format と result を使用して、整数を 16 進数に変換したいと考えています\x00\x00\x0F\x34
。これはどのように達成できますか?
質問する
5223 次
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 に答える