1

我正在寻找一个 C++ API,以方便地将任意位大小的(用户定义的)类型有效地序列化/反序列化为包含一组位的某个结构(最好是模板类)。我相信boost::dynamic_bitset这是一个好的开始,但它不包含用于附加内置类型等的函数/运算uint8_tuint16_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.

4

1 回答 1

1

我不知道有任何库,但自己编写 BitBufferReader/Writer 并不难,它完全符合您的要求。

于 2012-04-13T11:29:57.407 回答