浮動小数点数を16進数に変換する方法 質問する

浮動小数点数を16進数に変換する方法 質問する

Pythonでは、浮動小数点数を16進数に変換する必要があります。ゼロパディングが必要です(たとえば、0x10ではなく0x00000010)。http://gregstoll.dyndns.org/~gregstoll/floattohex/はい。(残念ながら私のプラットフォームでは外部ライブラリを使用できないため、その Web サイトで提供されているライブラリは使用できません)

これを行う最も効率的な方法は何ですか?

ベストアンサー1

これはPythonでは少し難しいです。なぜなら浮動小数点数を変換するわけではないからです。価値(16進)整数に変換します。代わりに、解釈するIEEE754 規格浮動小数点値を 16 進数としてバイナリ表現します。

組み込みの関数packと関数を使用しますunpackstruct図書館。

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 の文字列。

おすすめ記事