gud*_*dge 3 python hex css-float
我正在尝试使用以下方法将十六进制值转换为float(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)
Run Code Online (Sandbox Code Playgroud)
输出如下:
unpack requires a string argument of length 4
z = aXà
y = 0
x = 615885
Run Code Online (Sandbox Code Playgroud)
我注意到我得到了非常小的值的异常消息.在这种情况下,是否有正确的方法将十六进制值转换为浮点值.
您需要四个字节来解压缩,因此必要时预先添加空字节:
z = x.decode('hex')
z = '\0' * (4 - len(z)) + z
Run Code Online (Sandbox Code Playgroud)
通常str.decode
只输出表示值所需的字节数,这就是为什么你只看到小值发生的原因.
这非常有效:
>>> z = '615885'.decode("hex")
>>> z = '\0' * (4 - len(z)) + z
>>> struct.unpack('!f', z)
(8.939797951825212e-39,)
Run Code Online (Sandbox Code Playgroud)
如果你打算做双打,这个解决方案仍然有效,只需4
改为8
.
归档时间: |
|
查看次数: |
12571 次 |
最近记录: |