これらのプロパティでビットの配列を圧縮できるライブラリ(C++)またはアルゴリズムを見つけようとしました:
情報 (1 または 0) を運ぶゼロ ビットのシーケンスとビットのシーケンスがあります。シーケンスは通常 8 ~ 24 ビット長です。これらのゼロビットを利用する可逆圧縮が必要です。
どうやってそのようなシーケンスになったのですか:
さまざまな変数をバイト配列にシリアル化します。スナップショットを作成するためにこれを頻繁に行うため、これらの変数は通常あまり変化しません。この事実を圧縮に利用したい。これらの変数の型はわかりません。バイト長だけです。そこで、バイトを取得し、XOR を使用して以前のスナップショットとの差分情報を作成します。変数が少しだけ変化した場合、通常は多くのゼロ ビットが存在します。それがゼロビットシーケンスです。残りのビットは情報を運びます。これが情報シーケンスです。すべての変数に対して、おそらく 1 つのゼロ ビット シーケンスと 1 つの情報シーケンスが存在します。
編集:これまでのところ、これらのアルゴリズムを検討していました:
RLE - 情報シーケンスが結果を台無しにする
いくつかの記号コーディング (Huffman など) - データはおそらく多くの「記号」を共有しないでしょう。それはテキストではなく、シーケンスは短いです。通常、配列全体の長さは約 1000 バイトです。