質問

ザ- 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 浮動小数点数。しかし、私は自分自身でパッケージに精通していないので、それを使用する方法については何も教えてくれませんでした(少なくとも、ドキュメントで自

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top