素人Tips
Python2の場合
16進の浮動小数点を小数に変換する方法を調べてみたので、シェアしたいと思いました。
>> import struct
>>> struct.unpack('!f', '41973333'.decode('hex'))[0]
18.899999618530273
>>> struct.unpack('!f', '41995C29'.decode('hex'))[0]
19.170000076293945
>>> struct.unpack('!f', '470FC614'.decode('hex'))[0]
36806.078125
ずいぶん探すのに手間どった。。。
Python3の場合
上の参照にも書いてくれてますが、Python3の場合は、以下です。
1 |
struct.unpack('!f', bytes.fromhex('41973333'))[0] |
使用例
例えば、こんな使い方はどうでしょう?
コマンドを叩くと浮動小数点を尋ねられますので、値を入力してください。
[ファイル名: ch_float.py ]
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/usr/bin/env python import struct def f2d(value): return struct.unpack('!f', bytes.fromhex(value))[0] user_input = input("Value(hex)?: ") result = f2d(str(user_input).replace("0x","").zfill(8)) print (user_input + " ===> " + str(result)) |
たとえばこんな感じです。
1 2 3 |
$./ch_float.py Value(hex)?: 3f800000 #これを入力 3f800000 ===> 1.0 <= これが表示される |