如何在C#中实现霍夫曼代码压缩和解压缩

乌罗斯·武克奇(Uros Vukic)

我对霍夫曼编码有一项分配,以使用霍夫曼代码压缩和解压缩文本文档。我创建了一个霍夫曼树,其中每个节点都包含具有计算出的霍夫曼代码的BitArray。

主要问题是有效编码输入文件。我不确定如何保存编码的字节(通过将BitArray转换为字节数组创建)而不会在代码之间造成冲突?

示例:有两个霍夫曼码e = 101和i =0101。当它们转换为字节时,它们表示为e = 00000101和i = 00000101。

我该如何避免这种情况,并且有更好的方法编码文件?

压缩和解压缩具有100万个字符的文件的预计时间是多少?

(目前,我正在创建一个包含所有编码位的BitArray,然后将其转换为byte []并保存,巫婆会占用太多时间和内存。)

马克·阿德勒

认为您的输出是一串,而不是字节。您可以使用32位整数作为位缓冲区来连接代码,每个代码都具有任意数量的位3、3、4、15。当累加8位以上时,输出一个字节并将其从缓冲区中删除。最后,如果剩下的位少于8位,则用0位填充其余位,并写出最后一个字节。您可以通过移位和或操作来操作位缓冲区中的位。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章