如何将霍夫曼编码比特流存储为二进制文件?
答案 0 :(得分:3)
要存储编码,您需要做三件事:
有很多方法可以解决这些问题。您可以在表中显式存储每个字符的位模式,或者可以对您压缩的所有流使用相同的编码表。至于如何检测流的结束,一个选项可能是使用伪EOF字符来终止该流。为此,在构建霍夫曼编码树时,向其中添加一个具有多重性的新字符,该字符将用作描述流末尾的标记。在写入结果时,您可以在末尾编写此字符,以便即使它不使用完全适合字节的位数,也可以告诉流的结束位置。
为了存储实际内容,我建议将编码表示缓冲到位向量中,该位向量自动刷新到8位的倍数上的文件流中。当然,这不是唯一能做到这一点的方法,所以选择最好的方法。