像FAST这样的用于编码数据的协议(protocol)在最小化需要发送的数据量方面非常聪明。本质上来说,一个字符是一个char *,将前几个字节读为整数会给您一个ID号,该ID号会指向有关如何解码其余字节的指令(例如,它告诉您其余字节是,例如,尊重一个int,一个字符串,一个无符号的int,另一个无符号的int,一个嵌套的消息等。)以及接下来的几个字节(每位)告诉您后续字段是否存在。每个字节中的第8位被保留以表示数据之间的边界。

如果不对位操作(和,或,移位,位检查)进行线性遍历,似乎无法对这种协议(protocol)进行解码...有没有办法更快地做到这一点?

最佳答案

我认为您找不到比上述描述更快的技术或方法。此类协议(protocol)旨在按顺序解析它们。继续搜索的唯一原因是找到一种更方便的数据处理方式。

据我所知,有三种方法:

  • 只需按照以下说明操作即可
  • 使用具有Boost::Spirit的低级框架(例如binary parsers)。
  • 尝试使用现成的库:例如QuickFAST-用于本机C++和.NET的FAST协议(protocol)的实现。
  • 10-08 08:18
    查看更多