【发布时间】:2012-05-01 18:39:05
【问题描述】:
我正在尝试使用(Python 2.7)以下方法将十六进制值转换为浮点数:
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
我注意到我收到了非常小的值的异常消息。对于这种情况,是否有适当的方法将十六进制值转换为浮点值。
【问题讨论】:
-
是的,因为您需要 4 个字节来获取 表示 浮点数的 32 位(对于 32 位浮点数)。据我所知,在 IEEE-754 中“填充”这个数字没有简单的方法;也许源已损坏?