Преобразование между 4-байтовыми числами IBM с плавающей запятой и IEEEE

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

Header [240 byte]
Data [x byte]
Header [240 byte]
Data [x byte]

и так далее...

Разбор заголовков работает нормально, я получаю правильный вывод для каждого файла. Проблема с «данными». В документации говорится, что они находятся в 4-байтовых числах IBM с плавающей запятой. Насколько я знаю, структура C++ float использует стандарт IEEE, поэтому, вероятно, моя проблема заключается в преобразовании.

Я должен найти способ преобразовать число с плавающей запятой IBM в число с плавающей запятой IEEE.

Вопрос: Возможно ли? Как/с чего мне начать, если у меня очень плохое знание этих базовых структур?


person timko.mate    schedule 18.02.2019    source источник
comment
Вы можете конвертировать, но, конечно, не без потерь: en.wikipedia.org/wiki/IBM_hexadecimal_floating_point   -  person Dan M.    schedule 18.02.2019
comment
Да. Прочитал, только не знаю как реализовать. Возможно, мне нужен инструмент, но я не могу найти. Спросил, потому что, возможно, я на неправильном пути.   -  person timko.mate    schedule 18.02.2019
comment
@dewaffled Спасибо! Я посмотрю.   -  person timko.mate    schedule 18.02.2019
comment
As far as I know the C++ float structure uses the IEEE standard это неправильно. Стандарт C++ не требует использования IEEE-754. Он просто определяет необходимые пределы. Указывает ли стандарт C++ что-либо на представление чисел с плавающей запятой?, Гарантированно ли IEEE float и double имеют одинаковый размер в любой ОС?, Do любые реальные процессоры, не использующие IEEE 754?   -  person phuclv    schedule 18.02.2019
comment
Чтение IBM с плавающей запятой в C++   -  person phuclv    schedule 18.02.2019
comment
Звучит подозрительно похоже на файл SEG-Y. Если это так, вы должны быть в состоянии найти кучу существующих читателей для этого формата файла.   -  person Mark Dickinson    schedule 18.02.2019
comment
Это. Мне просто интересно. Оказалось, это хорошая практика! :)   -  person timko.mate    schedule 18.02.2019