将霍夫曼编码写回文件

时间:2012-02-19 17:25:06

标签: c++

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

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

2 个答案:

答案 0 :(得分:0)

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

霍夫曼会......压力很大。

答案 1 :(得分:0)

我猜你的问题源于不知道用于压缩数据的Huffman表/树。霍夫曼有三种基本类型:动态,静态和双通。

在静态霍夫曼中,所有压缩总是使用相同的表来完成。在这种情况下,解压缩器预装了与压缩器(总是)使用的相同表的副本。

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

在双通道霍夫曼中,您首先扫描数据以找出字符频率(因此,以及最佳压缩树)。在这种情况下,您必须使用解压缩程序的数据传输霍夫曼树(或构建树的频率)来重建数据。