我有一个关于Huffman编码的任务,使用Huffman代码压缩和解压缩文本文档。我已经创建了一个Huffman树,其中每个节点都包含有计算好的Huffman代码的BitArray。
主要问题是对输入文件进行有效编码。我不知道如何保存编码的字节(通过将BitArray转换成字节数组)而不造成代码之间的冲突?
示例:有两个Huffman代码e= 101和i= 0101。当它们被转换为字节时,它们被表示为e= 00000101和i= 00000101。
如何避免这种情况,是否有更好的方法对文件进行编码?
压缩和解压缩1毫安字符的文件的预期时间是多少?
(现在我正在创建一个包含所有编码位的BitArray,然后将其转换为byte[]并保存它,女巫花费了太多的时间和内存。)
发布于 2018-04-29 07:52:18
假设您的输出是一个位串,而不是字节。您可以将代码连在一起,每个代码都有任意数目的位( 3、4、15 ),不管是什么,使用一个整数(例如,32位)作为位缓冲区。当您累积超过8位时,您将输出一个字节并将其从缓冲区中移除。最后,如果剩不到8位,则用零位填充其余部分,并写出最后一个字节。您可以使用shift和或操作来操作位缓冲区中的位。
https://stackoverflow.com/questions/50080396
复制相似问题