Я читал двоичный файл в Python, как это:
from struct import unpack
ns = 1000
f = open("binary_file", 'rb')
while True:
data = f.read(ns * 4)
if data == '':
break
unpacked = unpack(">%sf" % ns, data)
print str(unpacked)
когда я понял, что unpack(">f", str)
предназначен для распаковки плавающей запятой IEEE, мои данные - это 32-битные числа с плавающей запятой IBM
У меня вопрос: как я могу выполнить unpack
чтобы распаковать 32-битные числа типа с плавающей запятой IBM?
Я не возражаю против использования подобных ctypes
для расширения python для повышения производительности.
РЕДАКТИРОВАТЬ: Я сделал некоторые поиски: http://mail.scipy.org/pipermail/scipy-user/2009-January/019392.html
Это выглядит очень многообещающе, но я хочу стать более эффективным: есть потенциальные десятки тысяч циклов.
РЕДАКТИРОВАТЬ: опубликовал ответ ниже. Спасибо за чаевые.