相信第一次做Huffman编码实验的时候遇到不少问题,其中最难解决的应该是文本编码没有压缩,反而增大了。
原因:
因为无论用bool类型还是char类型存储01串写入文件,都是一个字节,原来文本的字符也是一个字节,现在你编码之后一个字符需要多个01串,是不是需要的字节数就变多了啊,所以正确的做法应该是按位编码,
一个01只需要一位就能解决了,一个字节就可以存储8位,是不是就起到压缩的效果了,你说如果编码超过8位是不是变长呢?对于这个字符来说是的,但是根据Huffman编码的原理,肯定会变小的。
解决的办法我用的是C++的是 bitset ,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间,每8位作为一个字节写入文件。具体细节实现请看Huffman编码与译码(详解代码)_m0_53152199的博客-CSDN博客



