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

Cen*_*noc 2 python casting

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

eca*_*mur 10

你已经完成了大部分工作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
Run Code Online (Sandbox Code Playgroud)

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

  • 它可以在没有 `buffer()` 的情况下工作:`np.frombuffer(b'\x00\x3c', dtype='<f2')[0]` (2认同)