python: распаковать 32-разрядную точку с плавающей запятой IBM

Я читал двоичный файл в 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

Это выглядит очень многообещающе, но я хочу стать более эффективным: потенциально существуют десятки тысяч циклов .

РЕДАКТИРОВАТЬ: опубликовал ответ ниже. Спасибо за совет.

12
задан Mark Dickinson 8 December 2018 в 15:46
поделиться