我正在尝试读取由2字节浮点数组成的二进制文件,但我似乎无法获得我想要的值。 struct.unpack似乎只适用于4字节浮点数,除了完全手动完成转换外,我不确定还有什么可用。有没有办法做到这一点?非常感谢任何帮助。
答案 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字节的单精度浮点数;有几个人已经为你做过笨拙的事了:
http://davidejones.com/blog/1413-python-precision-floating-point/
http://fpmurphy.blogspot.no/2008/12/half-precision-floating-point-format_14.html
他们都将格式解析为Wikipedia article on the format中记录的成分,将2个字节填充为4个字节的单精度浮点数,然后将其反馈给python结构模块以将其转换为python float。