如何从 ZLIB 压缩器中获取 <distance, length> 对

how to get <distance, length> pairs from ZLIB compressor

我正在使用 ZLIB 压缩几个长字符串,它在使用霍夫曼树对这些表示进行编码之前使用重复子串的 LZ77 表示。我对研究整数元组表示本身的序列很感兴趣,并且一直在查看代码以弄清楚这些是在哪里生成的,以及如何将它们一个接一个地打印出来。不幸的是,我的 C 语言不是很强,而且压缩器似乎将距离作为指针处理,而不是作为整数处理。有人可以告诉我是否有一种简单的方法可以在算法运行时打印出元组序列,并指出代码中的适当位置。

您可以使用 infgen 反汇编 deflate 流。它将以可读的形式打印解码后的符号,例如match 41 105 表示要复制长度为 41 的字符串,距离为 105。