私は、現在約 20 年前の形式のレガシー バイナリ ファイルからイメージを (C# 経由で) 解析する任務を負っています。画像データはバイナリ ファイルに埋め込まれ、接頭辞として 16 進フラグが付けられます。以下は、私が探しているフラグの定義です(Cで):
#define C_THUMBNAIL 0x0008 /* thumbnail bitmap */
#define C_CTHUMBNAIL 0x000d /* compressed thumbnail bitmap */
ファイル内でこれらのフラグの 1 つ (フラグでさえあるのでしょうか?) を見つけるにはどうすればよいですか? フラグの場所と、フラグの後の値 (画像のサイズ (バイト単位)) を読み取る方法がわかれば、必要なことを実行できます。これは私がこれまでに持っているものです:
var binReader = new BinaryReader(new FileStream(fileLocation, FileMode.Open));
//1. find flag
//2. get image size in bytes
//3. take the slice of the byte array containing the image
//4. write that slice of the array to a .png file.
私の当初の考えは、フラグが見つかるまでバイナリ ストリームをたどることでしたが、16 進フラグが数字の 8 (0x0008 == 8 ですよね?) の場合、それを見つける方法に本当に混乱しています。ファイル内の他のすべての 8 と区別します。
これが重複した質問である場合は申し訳ありませんが、この問題を解決するために何を調査すればよいかを知るのに十分な知識がありません。バイナリ ファイルに関する MSDN のドキュメントを読み、ここで同様の質問をいくつか読みましたが、それらが私の質問に答えているかどうかわかりません。