3

How to convert floating point number to base-16 numbers, 8 hexadecimal digits per 32-bit FLP number in python?

eg : input = 1.2717441261e+20 output wanted : 3403244E

4

5 に答える 5

9

IEEE-754 表現のバイト値が必要な場合は、構造体モジュールで次のことができます。

>>> import struct
>>> f = 1.2717441261e+20
>>> struct.pack('f', f)
'\xc9\x9c\xdc`'

これはバイトの文字列バージョンであり、16 進値の文字列表現に変換できます。

>>> struct.pack('f', f).encode('hex')
'c99cdc60'

そして、それを 16 進整数として使用する場合は、次のように解析します。

>>> s = struct.pack('f', f).encode('hex')
>>> int(s, 16)
3382500448

整数を 16 進数で表示するには:

>>> hex(int(s, 16))
'0xc99cdc60'

これは質問の16進値と一致しないことに注意してください。値が正しい場合は、質問を更新して、それがどのように導出されたかを述べてください。

于 2013-10-16T22:41:46.530 に答える
1

期待される出力に問題があります:

import struct
input = 1.2717441261e+20
buf = struct.pack(">f", input)
print ''.join("%x" % ord(c) for c in struct.unpack(">4c", buf) )

出力:

60dc9cc9
于 2013-10-16T22:41:28.907 に答える