Pythonでは、浮動小数点数を16進数に変換する必要があります。ゼロパディングが必要です(たとえば、0x10ではなく0x00000010)。http://gregstoll.dyndns.org/~gregstoll/floattohex/はい。(残念ながら私のプラットフォームでは外部ライブラリを使用できないため、その Web サイトで提供されているライブラリは使用できません)
これを行う最も効率的な方法は何ですか?
ベストアンサー1
これはPythonでは少し難しいです。なぜなら浮動小数点数を変換するわけではないからです。価値(16進)整数に変換します。代わりに、解釈するのIEEE754 規格浮動小数点値を 16 進数としてバイナリ表現します。
組み込みの関数pack
と関数を使用しますunpack
struct
図書館。
Afloat
は 32 ビットです。まずpack
これをバイナリ1文字列に変換し、次に にunpack
変換しますint
。
def float_to_hex(f):
return hex(struct.unpack('<I', struct.pack('<f', f))[0])
float_to_hex(17.5) # Output: '0x418c0000'
double
が 64 ビットであることを知っているので、についても同じことができます。
def double_to_hex(f):
return hex(struct.unpack('<Q', struct.pack('<d', f))[0])
double_to_hex(17.5) # Output: '0x4031800000000000L'
1 - 生のバイトの文字列を意味します。ない1 と 0 の文字列。