【问题标题】:Compressing a file using Huffman coding使用霍夫曼编码压缩文件
【发布时间】:2018-12-01 22:22:10
【问题描述】:

使用 Huffmann 编码压缩文件时, 在为文件中的每个字符分配 Huffmann 代码后,这些字符应替换为压缩文件中的等效 Huffmann 代码。然后在解压缩文件时如何使用这些霍夫曼代码从压缩文件中提取等效字符。压缩文件是否包含一些额外的信息来解码霍夫曼代码?

【问题讨论】:

  • 在这个的典型实现中,你在压缩数据之前存储编码符号树,这样解压首先读取并重建符号树,然后使用它来解压后面的数据。看看我的answer to a different Huffman question 是否对您有帮助,如果没有,请随时扩展您的具体问题。
  • 非常感谢。在看了上面提到的答案之后,我有一个问题,我如何使用树(001A1C01E01B1D)生成霍夫曼代码?
  • 您读取这些位并重新生成树。要解码从根开始的压缩流,然后读取下一位,如果是 0,则向左,如果是 1,则向右,当到达叶节点时,输出叶节点中的符号,然后重置回根并继续阅读位。您能否准确说明您的问题是什么?
  • 我的问题是如何重新生成分配给字符的霍夫曼代码(例如使用树 001A1C01E01B1D)。然而,上述答案的这一部分解释了这一切。要读取,请执行以下操作:读取位。如果为 1,则读取 N 位字符/字节,返回没有子节点的新节点如果位为 0,则以相同的方式解码左右子节点,并返回具有这些子节点的新节点,但没有值。再次非常感谢。
  • 上述方法适用于 .txt 文件,但我无法压缩 PDF 文件。我需要帮助。

标签: huffman-code


【解决方案1】:

是的。您需要发送 Huffman 代码的描述才能对其进行解码。

通常的实现是使用canonical Huffman code 进行编码,然后只发送每个符号的长度。代码描述本身可以压缩。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多