このデータは (C++ を使用して) 配列に格納され、それぞれが異なる 125 ビットの繰り返しです。また、最後にそれぞれ 12 個の ASCII 文字の 8 つのメッセージがあります。配列内で差分圧縮を使用する必要があるかどうかを提案してください。
または、配列全体に他の圧縮スキームを適用する必要がありますか?
このデータは (C++ を使用して) 配列に格納され、それぞれが異なる 125 ビットの繰り返しです。また、最後にそれぞれ 12 個の ASCII 文字の 8 つのメッセージがあります。配列内で差分圧縮を使用する必要があるかどうかを提案してください。
または、配列全体に他の圧縮スキームを適用する必要がありますか?
一般に、ある種の予測可能性または冗長性を持つデータを圧縮できます。ディクショナリ ベースの圧縮 (ZIP スタイル アルゴリズムなど) は、選択したディクショナリを共有する必要があるため、伝統的にデータの小さなチャンクではうまく機能しません。
過去に、ある程度予測可能なパターンでデータの非常に小さなチャンクを圧縮したとき、私はカスタム辞書でSharpZipLibを使用しました。ディクショナリを実際のデータに埋め込むのではなく、データの圧縮 (解凍) が必要なすべてのプログラムにディクショナリをハードコーディングしました。SharpZipLib は、カスタム辞書とデータから辞書を分離するという両方のオプションを提供します。
繰り返しますが、これは適切な圧縮ディクショナリを作成できるように事前にデータのパターンを予測でき、ディクショナリ自体を圧縮データから分離できる場合にのみうまく機能します。
十分な情報が提供されていません。 ただし、ベル、クリアリー、ウィッテンによるテキスト圧縮という本を強くお勧めします。タイトルに惑わされないでください。ここでの「テキスト」は単に「ロスレス」を意味します。すべての手法はバイナリ データに適用されます。その本は高価なので、図書館間で借りることができるかもしれません。
また、明らかな Burrows-Wheeler (bzip2) または Lempel-Ziv (gzip、zlib) 手法を見逃さないでください。これらの手法のいずれかがアプリケーションでうまく機能する可能性は十分にあるため、代替手段を検討する前に、標準ツールを使用してデータを圧縮してみてください。