代码之家  ›  专栏  ›  技术社区  ›  icktoofay pcp

Python中的二进制16

  •  5
  • icktoofay pcp  · 技术社区  · 14 年前

    这个 struct 当您尝试在二进制格式之间转换数据时,模块非常有用。然而,最近我遇到了一个文件格式规范,它使用 the binary16 floating point format . 我浏览了Python文档,但是找不到任何可以转换的东西。将这些数据转换成Python浮点值的最佳方法是什么?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Alex Martelli    14 年前

    你可以粗略地做,就像你在C中做的一样——也就是说,我认为,大致上像这样……:

    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
    
        2
  •  2
  •   Stephen zdav    3 年前

    This guy's blog post 给出了一个python和python的实现。他使用 struct

        3
  •  1
  •   David Z    14 年前

    一个快速的谷歌搜索出现了 http://packages.python.org/bigfloat/ binary16 浮点数。不过,我自己对这个软件包并不熟悉,所以我无法告诉您有关如何使用它的任何信息(至少,只有您可以在文档中阅读自己的内容)。