Чтение 32-битного со знаком ieee 754 с плавающей запятой из двоичного файла с python? - PullRequest
17 голосов
/ 09 июня 2011

У меня есть двоичный файл, который представляет собой простой список 32-разрядных чисел с плавающей точкой ieee754 со знаком.Они ничем не отделены, а просто появляются один за другим до конца.

Как бы я прочитал из этого файла и правильно интерпретировал их как числа с плавающей запятой?

Я пытался использовать read(4), но он автоматически преобразовывает их в строку с кодировкой ascii.

Я также пытался использовать bytearray, но он принимает только 1 байт за раз вместо 4 байт за раз, как мне нужно.

Ответы [ 3 ]

28 голосов
/ 09 июня 2011
struct.unpack('f', file.read(4))

Вы также можете распаковать несколько одновременно, что будет быстрее:

struct.unpack('f'*n, file.read(4*n))
5 голосов
/ 09 июня 2011

Взгляните на struct.unpack . Может работать что-то вроде следующего ...

f = struct.unpack('f', data_read)
3 голосов
/ 09 июня 2011
import struct
(num,) = struct.unpack('f', f.read(4))
...