algorithm - 放气解码

标签 algorithm compression zip deflate

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

我。将重复信息(在指定窗口内)替换为对之前相同片段的引用。

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

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

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

引用:http://en.wikipedia.org/wiki/DEFLATE#Duplicate_string_elimination

最佳答案

推荐阅读Deflate RFC 1951 specification ,这更精确,并回答这样的问题。

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

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

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

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

相关文章:

java - Min Heapify方法-最小堆算法

algorithm - 使用预计算字典的小块无损压缩

c++ - 通过 FlasCC 在 AS3 中使用解压库

Ant zip : how to remove original directory from the path

python - 使用 Python 访问 .zipx

algorithm - 在 Delphi 中快速填充字符串

arrays - 检查数组之间重叠的算法

php - 关于 PHP 和 gz 压缩

c - 构建 zip 压缩器/解压缩器以提高 C 技能

go - 如何在 Go 中没有目录文件夹的情况下将文件压缩为 .zip