我试图找到一些可以使用这些属性压缩位数组的库(C++)或算法:
有零位序列和位序列,它们携带信息(1或0)。序列通常为 8-24 位长。我需要一个无损压缩来利用那些零位。
我是如何得出这样的序列的:
我将各种变量序列化为字节数组。我经常这样做来创建快照,所以这些变量通常不会有太大变化。我想用这个事实进行压缩。我不知道这些变量的类型,只知道字节长度。因此,我使用 XOR 获取字节并使用先前的快照创建差异信息。如果变量只改变了一点,通常会有很多零位。这就是零位序列。其余的位携带信息,即信息序列。对于每个变量,可能会有 1 个零位序列和 1 个信息序列。
编辑:到目前为止,我正在考虑这些算法:
RLE - 信息序列会弄乱结果
一些符号编码(霍夫曼等) - 数据可能不会共享太多“符号”,它不是文本并且序列很短。整个数组的长度通常约为 1000 字节。