【问题标题】:Deflate Algorithm PseudocodeDeflate算法伪代码
【发布时间】:2014-09-05 18:18:17
【问题描述】:

我目前正在尝试了解 DEFLATE 算法的工作原理。我知道它是 LZ77 和 Huffman Coding 的组合。我研究了这两个是如何工作的,但我目前不知道它们是如何在 DEFLATE 中使用或集成的。

是否有 DEFLATE 算法的伪代码?我一直在寻找它,但不幸的是,我看到的只是解释,并且没有确切的算法/伪代码用于放气。

非常感谢您的帮助。

顺便说一句,我已经检查过以下网站: http://www.zlib.net/feldspar.html http://www.gzip.org/algorithm.txt 我还检查了 RFC 1951 文档

例如,我有字符串“DEFLATE INFLATE” 如何使用 DEFLATE 进行压缩?

【问题讨论】:

    标签: algorithm encoding compression pseudocode deflate


    【解决方案1】:

    “DEFLATE INFLATE”是一个非常短的字符串,因此将使用固定的 Huffman 代码进行编码。对压缩数据的反汇编给出:

    last
    fixed
    literal 'DEFLATE IN
    match 5 8
    end
    

    这意味着一个固定块,它是最后一个块,文字字节“DEFLATE IN”和一个字符串匹配八个字节后五个字节,复制“FLATE”。

    固定的 Huffman 代码对文字字节、匹配长度和距离以及标记块结束的结束代码进行编码。文字、长度和结束代码在一个霍夫曼代码中。如果一个长度被解码,那么后面跟着一个距离它自己的霍夫曼码的距离码。

    除了完整详细地解释 deflate 格式的 RFC 1951 之外,您还可以查看 zlib 发行版中的 puff.c 代码,该代码旨在通过简单、完整的方式明确地记录 deflate 格式,以及好评如潮的充气机。

    您还可以使用生成上述示例的infgen.c 分解放气压缩的结果(例如使用gzip)以获得更多洞察力。

    您需要首先通过阅读 RFC 了解 deflate 格式,可能阅读并理解 puff.c,并查看带有 infgen.c 的示例。只有这样,您才能开始考虑使用压缩器创建放气流的方法。

    如果您不了解 RFC 1951,那么您可能需要先更深入地研究 Huffman 代码和 LZ77。

    【讨论】:

      【解决方案2】:

      wikipedia

      Deflate 流由一系列块组成。每个块前面都有一个 3 位的 header,位的含义是:

      第一位:Last-block-in-stream 标记:

      1: this is the last block in the stream.
      0: there are more blocks to process after this one.
      

      第二位和第三位:此块类型使用的编码方法:

      00: a stored/raw/literal section, between 0 and 65,535 bytes in length.
      01: a static Huffman compressed block, using a pre-agreed Huffman tree.
      10: a compressed block complete with the Huffman table supplied.
      11: reserved, don't use.
      

      00 --> LZ77
      01, 10 --> 霍夫曼

      LZ77 的情况下,它是重复字符串的编码(距离、长度)。

      01 Huffman 的情况下,Huffman 树是预先同意的(将在压缩和解压缩中进行硬编码)。

      如果是10 Huffman,以下是重新创建树的信息,然后是压缩数据。

      【讨论】:

        猜你喜欢
        • 2019-01-07
        • 1970-01-01
        • 1970-01-01
        • 2014-08-17
        • 2021-12-21
        • 1970-01-01
        • 2021-03-23
        • 2013-04-07
        • 2010-12-14
        相关资源
        最近更新 更多