Как распаковать файл в fortran77? - PullRequest
0 голосов
/ 27 марта 2009

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

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

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

Ответы [ 5 ]

1 голос
/ 30 марта 2009

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

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

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

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

1 голос
/ 28 марта 2009

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

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

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

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

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

0 голосов
/ 11 июня 2009

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

0 голосов
/ 28 марта 2009

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

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

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

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

0 голосов
/ 27 марта 2009

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

...