ick*_*fay 5 python format floating-point struct packing
struct当您尝试将数据转换为二进制格式或从二进制格式转换数据时,该模块非常有用.但是,最近我遇到了一个使用binary16浮点格式的文件格式规范.我查看了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
Run Code Online (Sandbox Code Playgroud)