0

C 言語を使用して PFS De-compressor を作成しようとしています。このプロジェクトでは、ファイルのオフセット、名前、およびサイズを取得するアーカイブの 16 進ダンプを分析する必要があります。

16 進ダンプを char 配列に格納することは良い習慣だと思いますか?16 進を文字に変換できますか?

ありがとう、アンドリュー・ボーグ

4

1 に答える 1

0

「16 進数を文字に変換できますか?」

はい。プログラムが 16 進数を表すリテラル文字 (たとえば、'5' と 'A') を読み取った後、プログラムはそれを 16 進数値 0x5a (10 進数の 90) に変換し、その値を文字として出力できます。 (「Z」として印刷されます)。文字を 16 進数に、またはその逆に変換する他の考えられるほとんどすべての方法は、C では非常に簡単です。

Cで16進文字列をバイト配列に正しく変換するには? char バッファを 16 進数 配列に出力する バイト配列をプレーンな古い C の 16 進数文字列に変換

あなたの質問の残りの部分であなたが何を求めているのかはっきりしません。あなたは尋ねていますか:

「私はこのバイナリ PFS ファイルを持っています。プログラムの実行時にそのファイルを RAM に読み込む C プログラムを作成できますか? もしそうなら、char 配列 (char[]) は適切なコンテナーですか?」

はい。C プログラムが未加工のバイナリ ファイル データをメモリに読み込む場合、通常はそのデータを char 配列に格納し、長さ個別に追跡します (C 文字列を表す char 配列とは異なり、バイナリ データには時折ゼロが含まれる可能性があるためです)。バイト)。標準メモリ ライブラリ関数 ( memcmp()memchr()など)を確認することをお勧めします。

「私は、PFS ファイルの 16 進ダンプである ASCII テキスト ファイルを持っています。プログラムの実行時にその ASCII テキスト ファイルを RAM に読み込む C プログラムを作成できますか。そうであれば、char 配列 (char[ ]) いい容器?」

はい。C プログラムがテキスト ファイルをメモリに読み込むとき、通常はそのデータを char 配列に格納します。ASCII テキスト ファイルにはゼロ バイトが含まれないため、長さを個別に追跡する必要はありません。そのため、通常の文字列の終わりのゼロ バイトは正常に機能します。標準の文字列ライブラリ関数 ( strchr()strstr()など)を見たいと思うかもしれません。

「私はこの PFS ファイルを持っています。プログラムが実行される前に、そのファイルの完全な内容がプログラムの実行可能コードに組み込まれる C プログラムを作成できますか?」

原則として、はい、未加工のバイナリ ファイルを、ソース コードに含めることができる 16 進数でいっぱいのテキスト ファイルに変換できます。

これはめったに行われず、実行時に単にプログラムをロードするよりも面倒ですが、単一の自己完結型の実行可能ファイルが必要な場合に行うことがあります。

ps: あなたの PFS ファイルは、Amiga や Playstation などからのものですか?

于 2013-12-08T00:42:46.513 に答える