Pythonでのbinary16
-
17-09-2020 - |
質問
ザ- struct
モジュールは、バイナリ形式との間でデータを変換しようとしているときに便利です。しかし、最近、私は使用するファイル形式の仕様に出くわしました binary16浮動小数点形式.私はPythonのドキュメントを調べましたが、それとの間で変換できるものは何も見つかりません。このデータをPython floatに/から変換する最良の方法は何でしょうか?
解決
あなたは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とpythonの両方で実装を提供します。彼は使用します struct
モジュールは、それを手動で解読します。それはすべてのことは、変換を複雑ではありません。
簡単なGoogle検索が上がった http://packages.python.org/bigfloat/ これは、それがの操作のためのコンテキストを持っていると言います binary16
浮動小数点数。しかし、私は自分自身でパッケージに精通していないので、それを使用する方法については何も教えてくれませんでした(少なくとも、ドキュメントで自
所属していません StackOverflow