二进制到 csv 解析器设计

Binary to csv Parser design

目的是制作一个二进制到csv的解析器。 我有一个二进制文件,其中包含来自微控制器的 command/response 数据包。大约有 30-40 个命令类型 there.The 命令包的结构不同。要知道命令的类型,您必须查看命令类型的前几位。使用此命令类型,您必须识别命令的结构(它应该显示数据包中各个字段的含义以及如何将这些字段转换为 csv 数据,如 int、char、string,有时还有一些特定的函数来处理某些字段,然后转换)。

我已经有一个 reader 线程和写入器线程 运行,它们将二进制数据从磁盘复制到输入缓冲区,并将二进制数据作为 csv 文件从输出缓冲区复制到磁盘。我必须设计一个中间解析器线程,它从输入缓冲区获取二进制数据并将其转换为 csv 并将其推送到输出缓冲区。

编码必须在 C/C++(最好是 C)中完成,性能是重中之重。我正在从如何存储这些命令类型结构以及如何根据此快速访问和解析数据的角度寻找此解析器的体系结构。可以快速执行此操作的第 3 方软件也可以。

对于 C++,您可以使用 std::map 并将命令值与处理命令的函数指针(或函数对象)相关联。

在 C(和 C++)中,您可以使用 table 命令和函数指针。在 table 中搜索命令,然后通过取消引用函数指针来执行关联的函数。对于大的命令集,可以使用upper_bound或者lower_bound来查找命令(对于小数据集,线性搜索性能更好)。您可以将 table 存储在只读存储器中。