web-dev-qa-db-ja.com

Pythonでバイナリファイルから32ビット符号付きieee754フローティングポイントを読み取る?

符号付き32ビットieee754浮動小数点数の単純なリストであるバイナリファイルがあります。それらは何も分離されておらず、EOFまで次々に表示されます。

このファイルからどのように読み取り、浮動小数点数として正しく解釈しますか?

read(4)を使用してみましたが、ASCIIエンコードの文字列に自動的に変換されます。

また、bytearrayを使用してみましたが、必要に応じて一度に4バイトではなく、一度に1バイトしか使用できません。

19
Razor Storm
struct.unpack('f', file.read(4))

一度に複数を開梱することもできます。これにより、より高速になります。

struct.unpack('f'*n, file.read(4*n))
29
Marcelo Cantos

struct.unpack を覗いてみてください。次のようなものが機能する可能性があります...

f = struct.unpack('f', data_read)
5
Andrew White
import struct
(num,) = struct.unpack('f', f.read(4))
3
Chris Eberle