编程语言
首页 > 编程语言> > Python中的binary16

Python中的binary16

作者:互联网

当您尝试将数据转换为二进制格式或从二进制格式转换数据时,struct模块非常有用.但是,最近我遇到了一个使用the binary16 floating point format的文件格式规范.我查看了Python文档,但找不到任何可以转换为它的内容.将这些数据转换为Python浮点数的最佳方法是什么?

最佳答案:

你可以大致像在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

标签:python,format,floating-point,struct,packing
来源: https://codeday.me/bug/20190515/1110727.html