私がやろうとしているのは、python-bitstringまたはPythonHachoirとして機能するテンプレートに基づいてクラスを作成することです。そして最後の目標は、特定のバイナリファイルを解析するためのいくつかのルールまたはパターンを説明することです(101の16進エディタには同様の優れた機能であるバイナリテンプレートがあります)。
これが私が実現をどのように見ているかの簡単な例です:
typedef struct _BINARYFILEFORMAT
{
short sMagic;
int sField_1, sField_2;
short sFrameLength;
int OverallLength;
}
BinaryFileFormat;
void main(int argc, char** argv)
{
// Storage for parsed file
BinaryFileFormat bff;
// Describing new pattern to parse a binary file with statistical information
Rule r = "<Magic>:2,
<Field_1>:4,
<Field_2>:4,
<FrameLength>:2,
<OverallLength>:4";
// Parse the file and place all data into the structure
BinaryParser bp(r, "<path_to_file>", bff);
// Now we can work with BinaryFileFormat structure
// ...
}
したがって、質問1は、C++でそのようなことをどのように行うことができるかということです。それは可能ですか?簡単な手がかりやヒントで、私にとって正しい方向に進むことができます。
質問2は、すべてのバイナリデータを格納するための対応する構造(たとえば、BINARYFILEFORMAT)を動的に作成することは可能ですか?
PS私は知っていますが、逆シリアル化は同様のことを行いますが、私の場合はそうではありません-最終的には、構造を使用しないようにします(もちろん、可能であれば)。