如何合并霍夫曼和lz77?

How to Merge huffman and lz77?

我有 huffman 和 lz77 代码,但我需要任何方法来合并这些算法以生成 deflate

我该怎么做?

我必须在不使用库的情况下手动编写它。

LZ77 为您提供了一系列文字和 length/distance 对。有很多方法可以将霍夫曼编码应用于此。第一步是将霍夫曼编码应用于文字,就好像没有 LZ77 一样。然后按原样传递 length/distance 对,确保您可以分辨下一个是文字还是 length/distance 对。

之后您还可以尝试编码 length/distance 对。 Deflate 将文字和长度放在一个霍夫曼代码中,并将距离放在第二个霍夫曼代码中。或者,您可以编码 count 个后跟一个长度的文字,然后将文字和长度放入不同的霍夫曼代码中。或者...许多其他方式。

为了能够解码,您还需要描述您在流的开头使用的霍夫曼代码。

您可以阅读 deflate description 了解它是如何做到这一切的。