【发布时间】:2011-07-07 19:18:11
【问题描述】:
我想将霍夫曼代码保存到文件中。我怎样才能做到这一点? 我将霍夫曼代码保存到一个字符串中,但生成的文件的大小比原始文件大。
【问题讨论】:
-
霍夫曼编码产生可变位长编码。如果您在输出时不将代码打包在一起,那么 5 位代码只需要 5 位,您将不会得到压缩。您需要创建一个可以一次填充 n 位的字节缓冲区,其中 n 不是 8 的倍数。
-
我不明白“您需要创建一个可以一次填充 n 位的字节缓冲区,其中 n 不是 8 的倍数” ?????怎么办?
-
您必须手动设置位,方法是将您的数据编码为其他数据类型(如 int)或使用其他库作为位集。
-
静态霍夫曼算法,我想。对于动态霍夫曼算法,你不需要存储任何东西:)
-
@antlersoft 如果编码数据的总位数不是 8 的倍数怎么办?不能简单地将 0 位附加到文件末尾以完成最后一个字节......读取压缩文件时虚拟零也会被解码......
标签: c++ c huffman-code