複雑な構造のバイナリ ファイルを読み取る方法を教えてくれる本やチュートリアルはありますか。複雑なファイル形式を読み取って構造体に保存する必要があるプログラムを作成するために、多くの試みを行いました。しかし、プログラムをクラッシュさせるヒープオーバーランなどのために常に失敗しました。
3 に答える
おそらく最善の策は、ファイル形式ではなく、バイナリ ネットワーク プロトコルに関する情報を探すことです。主な問題 (バイト オーダー、構造体のパッキング、ポインターのシリアル化と非シリアル化など) は同じですが、ネットワーク関係者は問題をより認識し、その処理方法をより明確にする傾向があります。ワイヤとの間でバイナリのブロブを読み書きすることは、ディスク上のバイナリ ブロブを処理することと大差ありません。
また、オープン ソースのグラフィック パッケージ ( netpbmやThe Gimpなど) にも既存の例が多数あります。オープン ソースのオフィス パッケージ ( LibreOfficeなど) も、複雑で複雑なバイナリ形式を扱う多くのサンプル コードを提供します。
Google の Protocol Buffersや昔ながらの ONC RPC と XDRには、何か役に立つものさえあるかもしれません。
私はそのようなことに関する本やマニュアルを知りませんが、HOWTO ガイドよりも多くの実際の作業例の方が役立つかもしれません。
メモリ アクセスの問題をデバッグするための最適なツールの 1 つは、valgrind です。次回はそれを試してみます。本に関しては、解析したい形式をより具体的にする必要があります。多くの形式があり、それらの多くは互いに根本的に異なります。
フレーバーをチェックしてください。C ライクな構造を使用してフォーマットを指定でき、C++ または Java でデータのパーサーを自動生成します。