霍夫曼编码任务。
我正在做什么。 从文件中读取字符串,准备Huffman结构,将字符串编码为位并将这些位保存到二进制文件。我需要什么: 从二进制文件解码字符串,但编码和解码必须是独立的。关闭e.q。
的应用程序后我保存到二进制文件:
A:000;l:001;a:10; :110;m:010;k:011;o:1110;t:1111;
00000110110010101100111110111110;
需要阅读并解码。所以我认为我需要再次建立霍夫曼结构,但是如何?
答案 0 :(得分:0)
因为您知道A:000;l:001;a:10; :110;m:010;k:011;o:1110;t:1111;
您可以尝试一次遍历字符串00000110110010101100111110111110
。还为每个字符及其代码都有一个switch语句。当你遇到一个案例时,例如000
,你可以输出A.这是我可以看到你能够回到字符串的一种方式。我相信有更好的方法。
希望这会有所帮助。
答案 1 :(得分:0)
我看到了这个选项
000
表示A
。答案 2 :(得分:0)
假设"自适应霍夫曼",通常不会自己决定每个角色使用什么代码。
通常的顺序是
在您的评论中,您提到了使用不同长度代码的问题。没有含糊之处。在一个极端的情况下,如果你有比其他所有字符组合更多的e,那么这棵树就会非常不平衡。 ' E'将被编码为' 1'所有其他字母都有不同长度的代码,从0开始。