1

ビットのセットを含む何らかの構造 (できればテンプレート クラス) に、任意のビット サイズの (ユーザー定義の) 型を効率的にシリアル化/非シリアル化するための C++ API を探しています。良いスタートだと思いますが、などの組み込み型を追加するための関数/演算子は含まれていません。boost::dynamic_bitsetuint8_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 内) についても知っています。そういうものをビットレベルまで拡張してほしい。

Ibellyboost::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 に答える