我有吐出的二进制数据以及需要读取该数据流,分析它并执行somethign有用的嵌入式系统上运行的软件的UDP包的外部装置。二进制数据被记录到文件中。我想写一个解析器,可以很容易地直接从任一UDP流,或一个文件采取将输入的数据解析为特定格式,然后直接输出到任何一个文件(例如matlab的dat文件),或另一种方法会做一些实时处理。有没有能帮助我这个,什么是去了解这一点的最好办法的任何资源?我想这可能是有意义的使用C ++流,但我不熟悉创建自定义输出流。这是否看起来是一个好办法,采取或有没有更好的办法去了解它?

感谢。

有帮助吗?

解决方案

二进制数据的美妙之处在于它的通常的非常固定的格式。 解析它的一个典型的方法是声明映射到所接收的分组的结构,然后只使用类型强制转换来读取字段结构元素。

的优点在于这无需解析。

你必须要小心结构包装规则和字节序使结构图完全相同的方式。在C“offsetof”和“的sizeof”宏使用,可以发出一些调试信息,检查您的结构确实是映射到你认为它是映射。

包装规则通常可以通过指令(如#编译指示的)或命令行选项来改变任一。字节序你被卡住。如果从你的嵌入式系统中使用其不同的,声明所有字段的字节,或者使用类似“NTOH”宏做字节交换。

scroll top