struct
当您尝试将数据转换为二进制格式时,该模块很有用。但是,最近我遇到了一个使用binary16 浮点格式的文件格式规范。我查看了 Python 文档,但找不到任何可以与之相互转换的东西。将此数据转换为 Python 浮点数/从 Python 浮点数转换的最佳方法是什么?
问问题
766 次
3 回答
4
你可以大致像在 C 中那样做——即,我认为,大致像这样......:
def tofloat(b16):
sign = -1 if b16 & 0x8000 else +1
expo = ( b16 & 0x7C00 ) >> 10
prec = b16 & 0x03FF
if expo == 0:
return sign * (2.0 ** -24) * prec
elif expo == 0x1F:
return sign * float('inf')
prec |= 0x0400
return sign * (2.0 ** (expo - 25)) * prec
于 2010-07-18T04:42:32.553 回答
2
这家伙的博客文章给出了两个和 python 的实现。他使用该struct
模块,然后手动对其进行解码。转换并不是那么复杂。
于 2010-07-18T04:25:03.283 回答
1
一个快速的谷歌搜索出现了http://packages.python.org/bigfloat/它说它有一个操作binary16
浮点数的上下文。不过,我自己对这个包并不熟悉,所以我无法告诉你如何使用它(至少,你只能在文档中阅读自己的内容)。
于 2010-07-18T04:19:23.903 回答