我想知道Fortran例程生成的未知二进制文件的结构。对于我下载的十六进制编辑器。我对整个概念都很陌生。我可以在转换工具中看到一些字符串。然而,其余的只是点和垃圾字符。
我试过一些在线转换器,但它只转换为十进制系统。有没有办法弄清楚某个十六进制代表整数和实数?
我也提到了以下主题,但我无法从中获得更多。 Hex editor for viewing combined string and float data
非常感谢任何帮助。感谢
答案 0 :(得分:0)
简短的回答是否定的。如果你真的不知道格式,那么你就被困住了。在某种语言中,您可能会看到一些“明显”的文本,但除此之外,它几乎是不可能的。十六进制编辑器将文件作为一组字节读取,并且通常显示十六进制值旁边的ASCII等效项。如果一个字节不是可打印的ASCII字符,它通常会显示一个。
所以,除了文本之外,如果在文件中看到值为$ 31,则无法知道这是否代表单个字符('1'),或者是2字节字的一部分,还是4字节长,或者实际上是一个8字节的浮点数。
答案 1 :(得分:0)
总的来说,这将是非常困难的!以下一些想法可能会有所帮助。
您能为FORTRAN程序提供一些输入,使其更改输出数据的长度/数量吗?例如。你可以让它产生1个单位的输出,然后是8个单位的输出,然后是64个单位的输出 - unit
我的意思是它输出的值的数量,如果这是它的作用。如果是这样,您可以根据输出单位的数量绘制输出文件长度,截距将告诉您标头的字节数(如果有)。因此,例如,如果你可以使它产生一个数字并且你得到一个24字节长的输出文件,并且当你产生2个数字时输出文件是28个字节长,你可能会推断出有一个20字节首先是标题,然后是每个数字4个字节。
你能产生一些已知的输出吗?例如。你可以让它产生零或256作为输出,如果是这样,你可以在输出文件中搜索零和FF
,看看你是否可以找到它们。
让它生成零(或其他一些数字)并保存输出文件,然后使其生成一个(或其他一些不同的数字)并保存输出文件,然后将文件差异推断到哪里这个号码位于。或者只是让它生成任意两个不同的数字,看看输出文件有多少变化。
您是否有其他可以理解该文件的程序?或者某种方式知道文件中的任何数字?如果是这样,获取这些数字并将它们转换为十六进制并在十六进制转储中查找它们的位置。