哈夫曼树的压缩问题

C++语言 码拜 8年前 (2016-04-21) 1555次浏览
做一个哈夫曼编码的译码器,将一个txt文件读入到程序中以后,哈夫曼树也已经建好,得出来的哈夫曼编码存在每个结点的一个String类型的属性Huffmancode中,做到这里该怎么进行利用哈夫曼编码进行文件的压缩的步骤啊?用String 类的c_str()方法返回一个char指针?然后再统计够不够8位,不够8位就补零。可是里面有的字符的哈夫曼编码大于8位,补零后的编码应该等于8位, 这样写入到文件中,不是比原来每个字符8位,所占的空间更大了吗?怎么会起到压缩的效果呢?
高手求帮助啊!
解决方案

20

引用:

做一个哈夫曼编码的译码器,将一个txt文件读入到程序中以后,哈夫曼树也已经建好,得出来的哈夫曼编码存在每个结点的一个String类型的属性Huffmancode中,做到这里该怎么进行利用哈夫曼编码进行文件的压缩的步骤啊?用String 类的c_str()方法返回一个char指针?然后再统计够不够8位,不够8位就补零。可是里面有的字符的哈夫曼编码大于8位,补零后的编码应该等于8位, 这样写入到文件中,不是比原来每个字符8位,所占的空间更大了吗?怎么会起到压缩的效果呢?
高手求帮助啊!

汗,既然返回的是char*,那么肯定是byte,8位啦。你要区别字符跟字节。

20

哈夫曼之所以可以压缩全靠它本身就是一个前缀编码,不补0依然能够正确解码,为什么要去补零?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明哈夫曼树的压缩问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)