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
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
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進値と一致しないことに注意してください。値が正しい場合は、質問を更新して、それがどのように導出されたかを述べてください。
期待される出力に問題があります:
import struct
input = 1.2717441261e+20
buf = struct.pack(">f", input)
print ''.join("%x" % ord(c) for c in struct.unpack(">4c", buf) )
出力:
60dc9cc9