2013-05-12 159 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。你将得到压缩。