struct 模块当您尝试将数据转换为和从二进制格式。但是,最近我遇到了一个文件格式规范,它使用 binary16浮点格式。我看了通过Python文档,但找不到任何可以转换为和它的任何东西。将此数据转换为Python floats的最佳方法是什么?

有帮助吗?

解决方案

你可以大致这样做你在c - i.e.,我认为,大致喜欢这个......:

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
.

其他提示

一个快速的谷歌搜索旋转 http://packages.python.org/bigfloat/ 这表示它具有操纵生成的浮点数的语境。然而,我自己不熟悉包装,所以我无法告诉你如何使用它的任何东西(至少,只有你可以在文档中阅读自己)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top