我的霍夫曼编码程序产生了更大的文件

时间:2018-02-23 21:26:08

标签: tree compression huffman-code

我刚刚完成了自己的霍夫曼编码程序。 它可以完美地编码和解码(解压缩后返回一个完全相同的文件) 问题是压缩后的结果文件比以前大。

对于一个实例,我压缩一个1.8 MB的图像文件,但我的压缩文件大约是14 MB。但是在我解压缩之后,它又恢复到1.8MB。

我的压缩文件中的数据是:

  1. '1'和'0'记录原始文件的数据
  2. 最后一行是我的树结构,由DFS-POST命令存储。 (叶节点标记为l,内部节点标记为i,对于实例,“la”是叶节点,字符为'a';“i”是内部节点。)
  3. 每个节点用新行分隔
  4. 如何更有效地存储霍夫曼树以使我的压缩文件更小?

1 个答案:

答案 0 :(得分:1)

我在此假设您要将数据作为1's0's的字符串写入文件。这意味着每个char都存储为8位,并且您的文件更大。要将1's0's的字符串转换为字节,请尝试这样的事情(这是python,调整为您使用的语言):

byte_array = bytearray()
for i in range(0, len(compressed), 8):
    byte_array.append(int(compressed[i:i + 8], 2))

compressed是您要压缩的文字字符串

我们以8块的方式循环遍历它

对于每个chunck,它被转换为base 2中的整数,对应于一个字节。这些字节被添加到数组中。

为了使其正常工作,你的原始文本必须由8设计,因此最后一位没有任何内容,所以你可能需要用一些额外的字符填充你的orrional数据。