C++ 什么是像fast这样的数据协议的快速解码方法?在fast中,数据以字节编码,位作为存在标志?
像FAST这样的数据编码协议在最小化需要发送的数据量方面非常聪明。从本质上讲,一个字节会得到一个char*,将前两个字节读作整数会给你一个id号,它会告诉你如何解码其余的字节(即,它告诉你剩余的字节分别是一个int、一个字符串、一个无符号int、另一个无符号int、一个嵌套消息等),然后下两个字节会告诉你(在每个位中)后续字段是否存在。每个字节中保留第8位以表示数据之间的边界C++ 什么是像fast这样的数据协议的快速解码方法?在fast中,数据以字节编码,位作为存在标志?,c++,c,bit-manipulation,binary-data,fast-protocol,C++,C,Bit Manipulation,Binary Data,Fast Protocol,像FAST这样的数据编码协议在最小化需要发送的数据量方面非常聪明。从本质上讲,一个字节会得到一个char*,将前两个字节读作整数会给你一个id号,它会告诉你如何解码其余的字节(即,它告诉你剩余的字节分别是一个int、一个字符串、一个无符号int、另一个无符号int、一个嵌套消息等),然后下两个字节会告诉你(在每个位中)后续字段是否存在。每个字节中保留第8位以表示数据之间的边界 如果没有位运算(AND、OR、移位、位检查)的线性遍历,解码这样的协议似乎是不可能的…有什么方法可以更快地执行此操作吗?
如果没有位运算(AND、OR、移位、位检查)的线性遍历,解码这样的协议似乎是不可能的…有什么方法可以更快地执行此操作吗?我认为您不会找到比刚才描述的更快的技术或方法。此类协议旨在按顺序解析它们。继续搜索的唯一原因是找到更方便的方法来处理数据 据我所知,有三种方法:
- 只需按照下面描述的操作即可
- 使用底层框架,例如具有
- 尝试使用就绪库:例如:一个用于本地C++和.NET ./LI>的快速协议的实现
免责声明:我是CoralFIX的开发人员之一。是什么让你认为简单的按位运算应用程序不够快?这些操作通常都非常快。这引起了我的注意,但你没有提供参考…这是正确的吗?en.wikipedia.org/wiki/fast\u protocol你不这么认为吗hink Boost::Spirit二进制解析器将比在++-ing指针时进行强制转换、移位和ORing更快?显然不是。更确切地说,Spirit:Qi(解析器,二进制解析器)基于EBNF语法,这确实意味着严格的解析,并且非常耗时(至少在编译时).但是使用二进制解析器可以帮助您减少写入代码的数量。