我尝试做的是基于模板创建一个类,它将充当python-bitstring或 Python Hachoir。最终目标是描述一些规则或模式来解析给定的二进制文件(101 hex 编辑器具有类似的酷特性 -二进制模板)。
这是我如何看待实现的一个简单示例:
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我知道,反序列化做类似的事情,但不是在我的情况下 - 在最终结果我想避免使用任何结构(当然,如果可能的话)。