我对霍夫曼编码有一项分配,以使用霍夫曼代码压缩和解压缩文本文档。我创建了一个霍夫曼树,其中每个节点都包含具有计算出的霍夫曼代码的BitArray。
主要问题是有效编码输入文件。我不确定如何保存编码的字节(通过将BitArray转换为字节数组创建)而不会在代码之间造成冲突?
示例:有两个霍夫曼码e = 101和i =0101。当它们转换为字节时,它们表示为e = 00000101和i = 00000101。
我该如何避免这种情况,并且有更好的方法编码文件?
压缩和解压缩具有100万个字符的文件的预计时间是多少?
(目前,我正在创建一个包含所有编码位的BitArray,然后将其转换为byte []并保存,巫婆会占用太多时间和内存。)
认为您的输出是一串位,而不是字节。您可以使用32位整数作为位缓冲区来连接代码,每个代码都具有任意数量的位3、3、4、15。当累加8位以上时,输出一个字节并将其从缓冲区中删除。最后,如果剩下的位少于8位,则用0位填充其余位,并写出最后一个字节。您可以通过移位和或操作来操作位缓冲区中的位。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句