私は(Pythonの2.7)を使用してfloat型に進値を変換するには、以下の方法しようとしています:以下のように出力されている"アンパックで浮動小数点数をアンパックするとき、" Unpackには長さ4の文字列引数が必要ですか? "
def hex2float(x):
y = 0
z = x.decode('hex')
try:
y = struct.unpack('!f', z)[0]
except:
print sys.exc_info()[1]
print 'z = ' + z
print 'y = %s' % (y)
print 'x = ' + x
return
def foo28():
x = '615885' #8.9398e-039
hex2float(x)
を:
unpack requires a string argument of length 4
z = aXà
y = 0
x = 615885
私は本当にのための例外メッセージを取得することに注意してください小さい値。そのような場合に、16進値を浮動小数値に変換する適切な方法はありますか?
はい、浮動小数点数を表す32ビット(32ビット浮動小数点数)を得るには4バイトが必要なので、そうです。私が知っているIEEE-754にこの数字を「埋め込む」のは簡単な方法ではありません。おそらくソースが壊れていますか? –