我想知道处理Huffman压缩中的最后一个字节的最佳方法。我有一些很好的C++代码,可以很好地压缩文本文件,但是目前我必须在我的编码文件中写入编码字符的数量(等于输入文件大小),因为不知道如何更好地处理最后一个字节。
例如,要压缩的最后一个字符是'a',其编码为011,我刚刚开始写新字节,因此最后一个字节看起来像: 011 + 一些5位垃圾,我将它们设置为零,例如在末尾。 当我对这个编码文件进行编码时,可能会发生代码00000(或更少的零)是某个字符的代码,因此我将在我的编码文件末尾有一些垃圾字符。
正如我在第一段中所写的那样,我通过在编码文件中保存输入文件的字符数来避免这种情况,并且在编码时,我读取编码文件以达到该数字(而不是到达EndOfFile,以避免那些5个零的例子)。 这并不是真正有效的,编码文件的大小增加了很多。
有什么更好的方法来处理这个问题吗?
例如,要压缩的最后一个字符是'a',其编码为011,我刚刚开始写新字节,因此最后一个字节看起来像: 011 + 一些5位垃圾,我将它们设置为零,例如在末尾。 当我对这个编码文件进行编码时,可能会发生代码00000(或更少的零)是某个字符的代码,因此我将在我的编码文件末尾有一些垃圾字符。
正如我在第一段中所写的那样,我通过在编码文件中保存输入文件的字符数来避免这种情况,并且在编码时,我读取编码文件以达到该数字(而不是到达EndOfFile,以避免那些5个零的例子)。 这并不是真正有效的,编码文件的大小增加了很多。
有什么更好的方法来处理这个问题吗?