2

我目前正在阅读有关编码/解码数据的 DEFLATE 方法。我了解该过程由两部分组成:

一世。将重复信息(在指定窗口内)替换为对前一个相同部分的引用。

ii. 使用霍夫曼编码来减小最常出现的符号的大小。

我有一个关于 (i) 的问题。DEFLATE 使用 LZ77,它基于大小窗口搜索信息,如果发现任何重复信息,则将其替换为“指针”。这很有意义。

但是,当使用 LZ77 解码时,DEFLATE 如何识别指针?(指针是长度-距离对;您如何辨别它是指针还是只是初始数据中存在的数字?)

参考:http ://en.wikipedia.org/wiki/DEFLATE#Duplicate_string_elimination

4

1 回答 1

4

建议阅读更精确的Deflate RFC 1951 规范,并回答此类问题。

您将在 => 3.2.5 中看到什么。压缩块(长度和距离代码)

“文字和长度字母合并为一个字母”

这意味着,通过简单地检索下一个符号,您可以立即知道它是文字 (0..255),还是匹配长度 (257..285),甚至是块的结尾 (256)。在匹配长度的情况下,也必须解码参考(偏移)。偏移量使用单独的树进行编码。

于 2012-01-25T09:38:27.937 回答