数据压缩的基本思想:
发现数据中彼此相同的部分,并用某种trick高效地描述这些部分。
步骤:
首先要把整个文件读一遍,在读的过程中,统计每个符号的出现次数。然后根据符号的出现次数,建立Huffman树,通过Huffman树得到每个符号的新的编码。对于文件中出现次数较多的符号,它的Huffman编码的位数比较少。对于文件中出现次数较少的符号,它的Huffman编码的位数比较多。然后把文件中的每个字节替换成他们新的编码。
通过最终的Huffman树,我们可以得到每个符号的Huffman编码。
a 为 110,b 为 00,c 为 01,d 为 10,e 为 111
由于Huffman编码为根结点到叶子结点路径上的0和1的序列,而一个叶子结点的路径不可能是另一个叶子结点路径的前缀,所以一个Huffman编码不可能为另一个Huffman编码的前缀,这就保证了Huffman编码是可以区分的。