2013-05-12 158 views
-1

我試圖找到一些庫(C++)或算法可能具有這些性質的壓縮比特的陣列:壓縮零比特序列

有很多零個比特seqences和比特,其攜帶的信息的序列(1或0)。這些序列通常長8-24位。 我需要一個可以利用這些零位的無損壓縮。

我怎麼來這樣的序列:

序列化的各種變量成字節數組。我經常這樣做來創建快照,因此這些變量通常不會有太大變化。我想用這個事實來壓縮。我不知道這些變量的類型,只是字節長度。因此,我使用XOR獲取字節並使用之前的快照創建diff信息。 如果變量只是變了一點,通常會有很多零位。這是零位序列。其餘的比特攜帶信息,那就是信息序列。 對於每個變量,可能會有1個零位序列和1個信息序列。

編輯: 到目前爲止,我正在考慮這些算法:

RLE - 信息序列會弄亂結果

一些符號編碼(霍夫曼等) - 數據可能不會太大分享「符號」,它不是一個文本,序列很短。整個陣列的長度通常約爲1000個字節。

+1

霍夫曼和LZ77爲大多數事情提供了很好的壓縮。要進行快速測試,請將數據寫入文件並將其放入zip壓縮文件中。如果壓縮比較好,那麼Huffman和LZ77很可能適合你,因爲這是ZIP檔案所使用的。 [我以前寫過類似主題的答案。](http://stackoverflow.com/a/16469857/1520907) – 2013-05-12 14:48:07

+1

感謝您的回覆。問題在於,由於信息序列的性質,不會有許多共同的「符號」。這些序列對於放氣等相對較短。但我會嘗試。 – user2375015 2013-05-12 14:55:43

+0

這值得一試:p – 2013-05-12 14:57:01

回答

0

如果〜1000字節的序列有很多零字節,那麼只需使用標準的面向字節的壓縮算法,如zlib。你將得到壓縮。