我正在使用C ++编写一个Huffman压缩程序,但我遇到了压缩文件结构的问题。它需要在我的新文件中存储一些结构,可以帮助我解码这个文件。我决定在这个文件的开头写一个代码表,然后从这个表构建一个树来解码下一个内容,但我不知道以哪种方式存储表更好(我的意思是我不知道表的结构,我知道如何以二进制模式编写东西)以及如何从这个表构建树。对不起我的英语不好。先感谢您。
答案 0 :(得分:1)
您无需传输概率或树。所有解码器需求是分配给每个符号的比特数,以及将比特值分配给编码器和解码器同意的每个符号的规范方式。请参阅Canonical Huffman Code。
答案 1 :(得分:0)
您可以尝试根据文本中出现的概率在压缩文件中编写带有字符序列的标题。或者写下字母后跟他们的概率。这样,您可以使用相同的过程来构建用于压缩和解压缩的树。至于如何构建树本身,我想你必须做一些研究,如果遇到问题就回来。