0

Fortran ルーチンが生成する未知のバイナリ ファイルの構造を知りたいと思いました。同じために、16進エディターをダウンロードしました。私はコンセプト全体にかなり慣れていません。変換ツールに文字列が見えます。ただし、残りはドットとジャンク文字だけです。

いくつかのオンライン コンバーターを試しましたが、10 進法にしか変換されません。特定の16進数が整数と実数を表すことを理解する方法はありますか?

以下のスレッドも参考にしましたが、あまり参考になりませんでした。 結合された文字列と浮動小数点データを表示するための 16 進エディタ

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

0

短い答えはノーです。フォーマットについて本当に何も知らない場合は、行き詰まっています。一部の言語で「明らかな」テキストが表示される場合がありますが、それを超えると、ほとんど不可能です。16 進エディタはファイルをバイトのグループとして読み取り、通常は 16 進値の横に同等の ASCII を表示します。バイトが印刷可能な ASCII 文字でない場合、通常は .

したがって、テキストはさておき、ファイルに値 $31 が表示された場合、これが 1 文字 ('1') を表しているのか、2 バイトの単語の一部なのか、4 バイトの長さなのか、実際にそれなのかを知る方法はありません。 8 バイトの浮動小数点数。

于 2014-09-01T14:34:50.077 に答える
0

一般的に、それはかなり難しいでしょう!次のアイデアのいくつかが役立つ場合があります。

  1. FORTRAN プログラムに、出力データの長さ/量を変更する入力を与えることはできますか? たとえば、1 単位の出力、次に 8 単位の出力、次に 64 単位の出力をunit生成できますか。その場合、出力ファイルの長さを出力の単位数に対してプロットすると、インターセプトからヘッダーのバイト数がわかります (存在する場合)。したがって、たとえば、1 つの数値を生成することができ、24 バイト長の出力ファイルが得られ、2 つの数値を生成するときに出力ファイルの長さが 28 バイトである場合、20 バイトがあると推測できます。先頭にヘッダー、次に番号ごとに 4 バイト。

  2. 既知の出力を生成できますか? たとえば、出力としてゼロまたは 256 を生成するようにできますか。そうであれば、FF出力ファイルでゼロを検索し、それらを見つけることができるかどうかを確認できます。

  3. ゼロ(または他の数値)を生成して出力ファイルを保存し、次に1(または他の別の数値)を生成して出力ファイルを保存し、ファイルを差分してその数値がどこにあるかを推測します。または、任意の 2 つの異なる数値を生成して、出力ファイルがどの程度変化するかを確認します。

  4. ファイルを理解できる別のプログラムはありますか? または、ファイル内の数値を知る方法はありますか? その場合は、それらの数値を取得して 16 進数に変換し、16 進数ダンプでその位置を探します。

于 2014-09-01T14:35:38.003 に答える