【问题标题】:writing huffman encoding back to a file将霍夫曼编码写回文件
【发布时间】:2012-03-10 05:12:39
【问题描述】:

我正在编写一个霍夫曼编码程序来压缩一个文本文件。我将文本文件转换为其霍夫曼编码值,我需要将其写入文件。问题是我无法识别写回文件的文本。

注意:我有哈夫曼树。我的文本编辑器无法识别回写的编码

【问题讨论】:

  • “我无法识别”是什么意思?你期望结果是什么样的,你实际得到了什么?
  • 如果没有“?”在您的帖子中,这不是问题。
  • 恭喜,它正在工作;)
  • 我不确定你关于“如果没有?,那么这不是问题”的规则,它可以很容易地绕过。你同意吗?
  • ...等待下一次编辑替换最后一个 '.'用“?”。

标签: c++


【解决方案1】:

在写入压缩数据之前,您还需要写出霍夫曼树。解压缩时,首先必须读回并重建树,然后通过遍历树来解压缩要解压缩的文本。 对于小文件,压缩文件实际上可以更大..因为这棵树。

huffman 会.. 压缩效果可能很差。

【讨论】:

  • 我有一个压缩数据。我只是使用位将压缩数据写回到一个文件中,以确保我不会浪费内存。
【解决方案2】:

我猜您的问题源于不知道用于压缩数据的 Huffman 表/树。霍夫曼分为三种基本类型:动态、静态和两遍。

在静态 Huf​​fman 中,所有压缩始终使用同一张表完成。在这种情况下,解压缩器会预加载与压缩器(始终)使用的表相同的副本。

在动态 Huf​​fman 中,您可以根据输入内容构建 Huffman 表/树。解压器根据压缩文件的内容与压缩器同步构建一个类似的表。

在两次 Huffman 中,您首先扫描数据以找出字符频率(以及最佳压缩树)。在这种情况下,您必须将 Huffman 树(或构建树的频率)与数据一起传输,以便解压缩器重建数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多