3

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

4

2 回答 2

11

你已经掌握了大部分的方法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 来解析结构。

于 2012-06-25T14:28:34.990 回答
2

您可以将它们填充为 4 字节单精度浮点数;有几个人已经为您完成了繁重的工作:

他们都将格式解析为它的组成部分,如Wikipedia article on the format 中所述,将 2 个字节填充为 4 个字节的单精度浮点数,然后将其反馈给 python struct 模块以将其转换为 python 浮点数。

于 2012-06-25T14:02:02.370 回答