ここのところ、すんごい久しぶりにMS-Windows VC++でプログラムを作成しています。
とあるファイルフォーマットを解析(といってもフォーマット自体はMSが公開してます)というかパースするプログラムです。
しかしなんか、最初は未公開だったせいか、簡単に判らないようにするためとしか思われない姑息なことを色々とやってくれていて、お陰でパースするのも一苦労です。
例えばですね、文字列は基本的にUTF-16でWCHAR配列を使うのですが、その配列長を示す値が byte単位のところとUnicode文字数のところがあるんです。byte単位とUnicode文字数では、数値が倍違うんですよね。どちらかに統一せずに、混在しているというのが嫌らしいです。
それとか、配列と配列長を示す値、その値の型って、
[配列長を示す値の型を示すフラグ][配列長を示す値][配列]
と並んでいるのが普通だと思うのですが、
[A配列の長さを示す値の型][B配列を示す値の型][B配列の長さを示す値][A配列の長さを示す値][A配列][B配列]
というように、複数の配列を不定な順で混ぜているんですよね。
これ、ファイルフォーマットが公開されているからできるけど、そうでなければちょっと無理ですよね。
WORDとかEXCELのファイルフォーマットも、こんな調子なのかなぁ。
0 件のコメント:
コメントを投稿