如何编写压缩算法?

时间:2016-08-30 22:08:15

标签: algorithm compression

我需要一些简单的压缩算法帮助。

我有两个无符号短路列表 - 一个用于输入,一个用于输出。输入列表以几千个值开头,输出列表开始为空。

我尝试使用“解压缩指令”替换输入中相同值的重复运行'输出中的值。

我希望它在输入位置之前扫描接下来的2-15个值,然后在输入位置后面扫描2-120个值,然后找到的最佳匹配将作为单个值添加到输出而不是整个运行。该值基本上是一个“减压指令”,并且等于2 *(a +(b * 512)+8192),其中' a'是扫描回来的距离,' b'是向前扫描的距离。因此,所有这些值都将落入16384-32767范围内。如果未找到匹配项,则按字面复制输入位置的值。

这会产生一个输出,为了在将来解压缩它,16384和32767之间的所有值都被读作解压缩指令,而所有其他值都按字面复制。

它不需要尽可能有效地压缩数据 - 它只需要压缩直到输出长度为6650或更短。

虽然我意识到已经有许多压缩程序可以做得比这更好,但我需要这个特定的例行程序用于特定目的。我真的似乎无法正常工作。

如果那里有很好的算法编写者,我很乐意听取你的意见。

1 个答案:

答案 0 :(得分:1)

如果您有许多重复值,则只需从每个值(第一个除外)中减去它之前的值。你最终会得到很长的零。然后在命令行上使用标准压缩例程(例如zlib或gzip)进行压缩。解压缩后,可以简单地撤消减法以恢复原始数据。