我目前正在阅读有关编码/解码数据的deflate方法。我知道这个过程由两部分组成:
i.将重复的信息(在指定窗口内)替换为对先前相同部分的引用。
二。使用哈夫曼编码来减小最常见符号的大小。
关于(我)我有一个问题。deflate使用lz77,它基于一个大小窗口搜索信息,如果发现任何重复的信息,则用“指针”替换它。这完全有道理。
然而,当使用lz77解码时,deflate如何识别指针?(指针是长度-距离对;如何辨别它是指针还是初始数据中的数字?)
参考:http://en.wikipedia.org/wiki/DEFLATE#Duplicate_string_elimination

最佳答案

建议阅读更精确的Deflate RFC 1951 specification,并回答这些问题。
你将在3.2.5中看到什么压缩块(长度和距离代码)
“文字和长度字母组合成一个字母表”
这意味着,只要检索下一个符号,就可以立即知道它是文本(0..255),还是匹配长度(257..285),甚至是块的结尾(256)如果长度匹配,则还必须解码引用(偏移量)偏移量使用单独的树进行编码。

关于algorithm - DEFLATE解码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8994643/

10-12 02:09