5

このstructモジュールは、データをバイナリ形式に変換したり、バイナリ形式から変換したりするときに役立ちます。しかし、最近、binary16 浮動小数点形式を使用するファイル形式仕様に出くわしました。Python のドキュメントを調べましたが、Python との間で変換できるものは見つかりません。このデータを Python フロートとの間で変換する最良の方法は何でしょうか?

4

3 に答える 3

4

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
于 2010-07-18T04:42:32.553 に答える
2

この男のブログ投稿では、 と python の両方での実装が提供されています。彼はstructモジュールを使用し、それを手動でデコードします。変換はそれほど複雑ではありません。

于 2010-07-18T04:25:03.283 に答える
1

A quick Google search turned up http://packages.python.org/bigfloat/ which says it has a context for manipulation of binary16 floating-point numbers. I'm not familiar with the package myself, though, so I couldn't tell you anything about how to use it (at least, nothing more than you can read yourself in the documentation).

于 2010-07-18T04:19:23.903 に答える