【发布时间】:2012-04-13 11:05:41
【问题描述】:
我正在寻找一个 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。
【问题讨论】:
标签: c++ boost binary-serialization