Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 二进制到csv解析器设计_C++_C_Csv_Parsing_Binary Data - Fatal编程技术网

C++ 二进制到csv解析器设计

C++ 二进制到csv解析器设计,c++,c,csv,parsing,binary-data,C++,C,Csv,Parsing,Binary Data,目的是制作一个二进制到csv解析器。 我有一个二进制文件,其中包含来自微控制器的命令/响应数据包。大约有30-40种命令类型。命令包的结构不同。要知道命令的类型,您必须查看命令类型的前几位。使用此命令类型,您必须确定命令的结构(应显示数据包中的各个字段的含义,以及如何将这些字段转换为csv数据,如int、char、string,有时还需要一些特定函数来处理某些字段,然后再进行转换) 我有一个读线程和写线程已经在运行,它将二进制数据从磁盘复制到输入缓冲区,并作为csv文件从输出缓冲区复制到磁盘。我

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

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


编码必须在C/C++(最好是C)中完成,性能是头等大事。从如何存储这些命令类型结构和如何根据这个FAST访问和解析数据,我正在寻找一个解析器的体系结构。第三方软件可以快速完成。C++的

< P>,可以使用<代码> STD::MAP< /Cord>,并将命令值与函数指针(或函数对象)关联起来。处理命令的


在C(和C++)中,可以使用命令和函数指针表。在表中搜索命令,然后通过取消引用函数指针执行关联函数。对于大型命令集,可以使用
上限
下限
查找命令(对于小型数据集,线性搜索具有更好的性能)。可以将表存储在只读内存中。

因为标记为C++,可以有一个基类,该模型对命令的公共字段进行建模,然后使每个命令从基类继承。在internet上搜索“c++工厂设计模式”。非常感谢您提供有关工厂设计模式的信息。在C语言中,对于命令表,您认为哪种数据结构最适合?我使用结构表。这允许编译器将它们存储到只读内存中,并且数据在
main()
之前可用。