半精度(2字节)转换为Python中的Float

时间:2012-06-25 13:49:24

标签: python casting

我正在尝试读取由2字节浮点数组成的二进制文件,但我似乎无法获得我想要的值。 struct.unpack似乎只适用于4字节浮点数,除了完全手动完成转换外,我不确定还有什么可用。有没有办法做到这一点?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:8)

你已经完成了numpy.fromfile的大部分工作。而是使用numpy.frombuffer

>>> np.frombuffer(buffer("\0\0"), dtype=np.float16)[0]
0.0
>>> np.frombuffer(buffer("\x00\x3c"), dtype=np.float16)[0]
1.0

如果数据具有已知形式,您可以通过创建具有适当布局的dtype来解析结构。

答案 1 :(得分:2)

你可以将它们填充到4字节的单精度浮点数;有几个人已经为你做过笨拙的事了:

他们都将格式解析为Wikipedia article on the format中记录的成分,将2个字节填充为4个字节的单精度浮点数,然后将其反馈给python结构模块以将其转换为python float。