我所要做的是根据模板创建一个类,它将作为python-bitstring或Python Hachoir。最后的目标是描述一些规则或模式来解析给定的二进制文件(101十六进制编辑器有类似的酷功能 - Binary Templates)。如何开发一个类来解析使用模板和/或规则的二进制文件
下面是我如何看待实现一个简单的例子:
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)来存储所有的二进制数据?
P.S.我知道,反序列化做类似的事情,但不是在我的情况 - 最终的结果,我想避免使用任何结构(当然,如果可能的话)。
Boost.Spirit具有二进制解析器。 – 2012-04-16 01:11:40