Данные, хранящиеся в записи Фортрана, не являются непрерывными, поскольку они разделены маркерами записи. Структура записи следующая: «маркер, данные, маркер, данные,..., данные, маркер». Длина областей данных и маркеров известна.
Длина данных между маркерами не кратна 4 байтам, иначе я могу сопоставить каждую область данных с массивом.
Первый маркер можно пропустить, установив смещение в memmap. Можно ли пропустить другие маркеры и сопоставить данные с массивом?
Извиняюсь за возможную двусмысленность выражение и спасибо за любое решение или предложение.
Отредактировано 15 мая.
Это неформатированные файлы на Фортране. Данные, хранящиеся в записи, представляют собой массив (1024^3)*3 float32 (12 ГБ).
Схема записей переменной длины размером более 2 гигабайт показана ниже:

(Подробнее см. здесь -> раздел [ Типы записей] -> [Записи переменной длины].)
В моем случае, кроме последней, каждая подзапись имеет длину 2147483639 байт и разделена 8 байтами. (как вы видите на рисунке выше, это маркер конца предыдущей подзаписи и маркер начала следующей, всего 8 байт).
Мы видим первая подзапись заканчивается первыми 3 байтами определенного числа с плавающей запятой, а вторая подзапись начинается с оставшегося 1 байта как 2147483639 mod 4 =3.
Подробнее здесь: https://stackoverflow.com/questions/165 ... ith-python
Мобильная версия