我正在寻找一个 C++ API,以方便地将任意位大小的(用户定义的)类型有效地序列化/反序列化为包含一组位的某个结构(最好是模板类)。我相信boost::dynamic_bitset
这是一个好的开始,但它不包含用于附加内置类型等的函数/运算uint8_t
符uint16_t
。
我希望它像下面的例子一样工作
boost::dynamic_bitset bs;
bs.append((uint8_t)123);
bs.append((uint16_t)12345, big_endian);
流操作符也应该支持与状态相关的字节序行为:
bs << (uint8_t)(123);
bs << little_endian;
bs << (uint16_t)(12345); // serialized as little_endian
bs << big_endian;
我也知道 Boost.Serialization 和 Boost.Endian(在 Boost Sandbox 中)。我希望将类似的东西扩展到位级别。
我相信boost::dynamic_bitset
的成员函数
void append(Block block);
和
template <typename BlockInputIterator>
void append(BlockInputIterator first, BlockInputIterator last);
对于大多数用户来说,级别太低了。我想它应该在这些新append
功能中重用。为了优化更多的表达式模板,在将它们附加到dynamic_bitset
.