2014-09-01 5 views
0

Мне захотелось узнать структуру неизвестного двоичного файла, сгенерированного программой Fortran. Для того же я загрузил hex-редактор. Я довольно новичок во всей концепции. Я вижу некоторые символы в инструменте преобразования. Однако остальное - это только точки и нежелательные персонажи.Чтение hexdump: целые числа и числа

Я пробовал с некоторым онлайн-конвертером, но только конвертирует в десятичные системы. Есть ли какой-либо возможный способ выяснить, что определенный hex представляет целое и реальное?

Я также упомянул о следующей теме, но я не мог ее извлечь из этого. Hex editor for viewing combined string and float data

Любая помощь будет высоко оценена. Спасибо

+0

С какой платформой вы работаете? –

+0

Я использую sun solaris KDE, однако, чтобы проверить файл и иметь большую гибкость, я переместил его в свои окна 7 шт. Поскольку система с 90-х годов, даже fortran-компилятор не поддерживает доступ к потоку и множество новых функций, которые были введены в более поздних версиях fortran. – PT2009

ответ

0

Короткий ответ - нет. Если вы действительно ничего не знаете о формате, то вы застряли. Вы можете увидеть какой-то «очевидный» текст на каком-то языке, но помимо этого, это практически невозможно. Ваш Hex-редактор читает файл как группу байтов и отображает, как правило, эквиваленты ASCII наряду с шестнадцатеричными значениями. Если байт не является печатаемым символом ASCII, он обычно отображает a.

Итак, текст в сторону, если вы видите в файле значение $ 31, у вас нет способа узнать, представляет ли он один символ ('1') или является частью 2-байтового слова или 4 байта длинным или действительно 8-байтовым числом с плавающей запятой.

0

В общем, это будет довольно сложно! Некоторые из следующих идей могут помочь.

  1. Можете ли вы предоставить программе FORTRAN несколько входов, которые позволяют изменить длину/количество выходных данных? Например. вы можете заставить его произвести 1 единицу вывода, затем 8 единиц продукции, затем 64 единицы вывода - на unit Я имею в виду количество значений, которые он выводит, если это то, что он делает. Если это так, вы можете построить длину выходного файла по количеству единиц вывода, и перехват подскажет вам, сколько байтов заголовок, если таковые имеются. Так, например, если вы можете заставить его произвести один номер, и вы получите выходной файл длиной 24 байта, а когда вы создадите 2 числа, выходной файл длиной 28 байтов, вы можете сделать вывод, что есть 20 байт заголовок в начале, а затем 4 байта на номер.

  2. Можете ли вы создать какой-то известный выход? Например. Можете ли вы заставить его генерировать нуль или 256 в качестве вывода, если это так, вы можете искать нули и FF в своем выходном файле и посмотреть, можете ли вы их найти.

  3. Заставьте его сгенерировать нуль (или какой-либо другой номер) и сохранить выходной файл, а затем заставить его сгенерировать одно (или другое другое число) и сохранить выходной файл, а затем разделить файлы, чтобы определить, где это номер находится. Или просто сделайте, чтобы он произвел любые два разных номера и посмотрел, какая часть выходного файла изменяется.

  4. У вас есть другая программа, которая может понять файл? Или какой-то способ узнать любые цифры в файле? Если это так, получите эти числа и преобразуйте их в шестнадцатеричный код и найдите их позиции в шестнадцатеричном дампе.

+0

Файл двоичного файла довольно сложный с целым числом * 2, целым числом * 4, вещественным и символами. Однако из скриптов Fortran мне удалось отфильтровать заголовок файла. Также заголовок имеет переменный размер, в зависимости от количества данных, заданных пользователем.Я знаю, это напряженная задача. Я попробую, как вы все-таки предложили! – PT2009

Смежные вопросы