Как распаковать файл в фортран77?

У меня есть сжатый файл. Давайте проигнорируем команду tar, потому что я не уверен, что она сжата с ней. Все, что я знаю, это то, что он сжат в fortran77, и это то, что я должен использовать для его распаковки. Как мне это сделать? Является ли декомпрессия дорогой в один конец или мне нужен определенный заголовочный файл, который приведет (направит) декомпрессию?

Это не файл .Z. Он заканчивается чем-то другим. Что мне нужно, чтобы распаковать его? Я знаю формат конечного распакованного архива.

Возможно ли, что файл сжат простым способом, но появляется с другим расширением?


person Community    schedule 27.03.2009    source источник
comment
Если у вас есть исходный код программы f77, вы можете использовать f2c, чтобы преобразовать его в C, собрать его с помощью gcc. Вы действительно не дали достаточно информации для кого-либо, чтобы помочь вам намного больше, чем здесь.   -  person Mitch Haile    schedule 28.03.2009


Ответы (5)


Во-первых, давайте уберем из уравнения «фортрановую» часть. Не существует стандартного (под этим я подразумеваю стандарт Фортрана) способа сжатия или распаковки файлов, поскольку в Фортране нет утилиты сжатия как части языка. Может быть, кто-то написал что-то свое, но это полностью на его совести.

Итак, вы застряли с общедоступными утилитами сжатия и тому подобным. В системах, в которых они доступны, и в компиляторах, которые их поддерживают (они различаются), вы можете использовать функцию SYSTEM, которая выполняет системную команду, передавая командную строку интерпретатору команд операционной системы (я знаю, что она существует в cvf, вероятно ivf ... вам, вероятно, следует поискать его в справке вашего компилятора).

Поскольку вы уже задали аналогичный вопрос < /a> Я предполагаю, что у вас все еще есть проблемы с этим. Вы упомянули, что «он был сжат с помощью fortran77». Что ты имеешь в виду ? Что кто-то создал утилиту сжатия в f77 и использовал ее? Таким образом, это сделало бы это индивидуальное решение?

Если это какое-то заказное решение, то это может быть практически что угодно, так как многие алгоритмы могут служить «алгоритмами сжатия» (запись файла в виде двоичного файла по сравнению с обычным текстом сэкономит несколько байт; вуаля, «сжатие»)

Или я что-то неправильно понял? Пожалуйста, уточните это немного.

person Rook    schedule 27.03.2009

Я предполагаю, что у вас есть двоичный файл, который выводится программой Fortran. Они могут выглядеть как сжатые файлы, потому что они не читаются в текстовом редакторе.

Fortran позволяет вам записывать данные в памяти в файл без его форматирования, так что вы можете перезагрузить его позже, не анализируя его. Проблема, однако, в том, что вам нужен исходный код, чтобы увидеть, какие типы переменных записаны в файле.

Если у вас нет доступа к исходному коду Фортрана, но есть много свободного времени, вы можете написать простую программу на Фортране и угадать, какие типы переменных используются. Однако я бы не советовал этого, поскольку Фортран не очень прощает.

Если вы хотите попробовать простой исходный код, посмотрите эта страница, которая подробно описывает двоичное чтение и запись в Fortran и включает пример кода. Просто начните с замены reclength=reclength*4 на reclength=reclength*2 для двойной точности.

person Phil H    schedule 30.03.2009
comment
Это тоже мое предположение - вероятно, это неформатированный двоичный файл. - person Tim Whitcomb; 30.03.2009

Стандартного метода декомпрессии нет, есть тонны. Вам нужно будет знать метод, используемый для его сжатия, чтобы распаковать его.

person John T    schedule 27.03.2009
comment
Вероятно, он имеет в виду файл, сжатый с помощью командной оболочки, т. е. файл .Z. - person Mitch Haile; 27.03.2009
comment
Он уточнил, что это не так =\ - person John T; 28.03.2009
comment
Хм, я не думаю, что это предложение было там, когда я писал выше... :-) - person Mitch Haile; 28.03.2009

Вы сказали, что расширение файла было не .Z, а какое-то другое. Что это было еще?

Если это .gz (что очень часто встречается в системах Unix), то "gunzip" является правильной командой. Если это .tgz, вы можете распаковать и разархивировать его. (Или вы можете прочитать справочную страницу для tar(1), так как он, вероятно, имеет возможность архивировать и распаковывать вместе.)

Если это в Windows, посмотрите, может ли Windows прочитать его напрямую, так как сама файловая система поддерживает формат ZIP.

Если что-то еще, пожалуйста, просто укажите имя файла (или, если есть соображения безопасности, имя файла, начинающееся с первой точки), и мы, возможно, сможем понять это.

person David Thornley    schedule 27.03.2009

Вы можете проверить, является ли это сжатым файлом известного типа, с помощью команды file. Предполагая, что file возвращает что-то вроде «двоичного файла», вы почти наверняка смотрите на простые двоичные данные.

person Rick Reynolds    schedule 11.06.2009