0

我想知道 Fortran 例程生成的未知二进制文件的结构。同样,我下载了十六进制编辑器。我对整个概念相当陌生。我可以在转换工具中看到一些字符串。但是,其余的只是点和垃圾字符。

我尝试使用一些在线转换器,但它只能转换为十进制系统。有没有办法找出某个十六进制表示整数和实数?

我还提到了以下线程,但我无法从中得到太多。 用于查看组合字符串和浮点数据的十六进制编辑器

任何帮助将非常感激。谢谢

4

2 回答 2

0

最简洁的答案是不。如果你真的对格式一无所知,那么你就被卡住了。你可能会看到一些“明显”的文字,用某种语言,但除此之外,这几乎是不可能的。您的十六进制编辑器将文件读取为一组字节,并通常在十六进制值旁边显示 ASCII 等效项。如果一个字节不是可打印的 ASCII 字符,它通常会显示一个 .

所以,除了文本,如果你在文件中看到一个值 $31,你无法知道它是否代表单个字符 ('1'),或者是 2 字节字的一部分,或者 4 字节长,或者确实一个 8 字节的浮点数。

于 2014-09-01T14:34:50.077 回答
0

一般来说,这将是相当困难的!以下一些想法可能会有所帮助。

  1. 你能给 FORTRAN 程序一些输入,使它改变输出数据的长度/数量吗?例如,你能不能让它产生 1 个单位的输出,然后是 8 个单位的输出,然后是 64 个单位的输出——unit我的意思是它输出的值的数量,如果这是它所做的。如果是这样,您可以根据输出单位数绘制输出文件长度,并且截距将告诉您标头的字节数(如果有)。因此,例如,如果你可以让它产生一个数字并且你得到一个 24 字节长的输出文件,当你让它产生 2 个数字时,输出文件是 28 字节长,你可能会推断出有一个 20 字节开头的标头,然后每个数字 4 个字节。

  2. 你能生成一些已知的输出吗?例如,您能否让它产生零或 256 作为输出,如果是这样,您可以FF在输出文件中搜索零并查看是否可以找到它们。

  3. 使其生成一个零(或其他数字)并保存输出文件,然后使其生成一个(或其他一些不同的数字)并保存输出文件,然后区分文件以推断该数字所在的位置。或者只是让它产生任何两个不同的数字,然后看看输出文件有多少变化。

  4. 您是否有其他程序可以理解该文件?或者以某种方式知道文件中的任何数字?如果是这样,获取这些数字并将它们转换为十六进制并在十六进制转储中查找它们的位置。

于 2014-09-01T14:35:38.003 回答