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