目标是使二进制解析为csv解析器。 我有一个二进制文件,其中包含来自微控制器的命令/响应数据包。大约有30-40种命令类型,命令包的结构不同。要了解命令的类型,您必须查看命令类型的前几位。使用这种命令类型,您必须确定命令的结构(它应该显示数据包中各个字段的含义,以及如何将这些字段转换为csv数据,例如int,char,string,有时还需要一些特定的函数来处理某些字段,然后转换)。
我有一个正在运行的读取器线程和写入器线程,它们将二进制数据从磁盘复制到输入缓冲区,并从输出缓冲区复制到磁盘,作为csv文件。我必须设计一个中间解析器线程,该线程从输入缓冲区中接收二进制数据,并将其转换为csv并将其推入输出缓冲区。
必须使用C / C ++(最好是C)进行编码,而性能是重中之重。从如何存储这些命令类型结构以及如何根据这种快速访问和解析数据的角度来看,我正在寻找一种用于此解析器的体系结构。可以快速执行此操作的第三方软件也可以。
答案 0 :(得分:0)
对于C ++,您可以使用std::map
并将命令值与处理命令的函数指针(或函数对象)相关联。
在C(和C ++)中,可以使用命令和函数指针表。在表中搜索命令,然后通过取消引用功能指针来执行关联的功能。对于大型命令集,可以使用upper_bound
或lower_bound
查找命令(对于小型数据集,线性搜索具有更好的性能)。您可以将表存储在只读存储器中。