将霍夫曼树与编码比特流一起存储为文件的基本技术是什么?

时间:2011-02-13 19:22:34

标签: file huffman-code

如何将霍夫曼编码比特流存储为二进制文件?

1 个答案:

答案 0 :(得分:3)

要存储编码,您需要做三件事:

  1. 重构将每个字符映射到位模式的编码树的某种方式。
  2. 流的实际编码。
  3. 某种检测编码数据结束的方法。
  4. 有很多方法可以解决这些问题。您可以在表中显式存储每个字符的位模式,或者可以对您压缩的所有流使用相同的编码表。至于如何检测流的结束,一个选项可能是使用伪EOF字符来终止该流。为此,在构建霍夫曼编码树时,向其中添加一个具有多重性的新字符,该字符将用作描述流末尾的标记。在写入结果时,您可以在末尾编写此字符,以便即使它不使用完全适合字节的位数,也可以告诉流的结束位置。

    为了存储实际内容,我建议将编码表示缓冲到位向量中,该位向量自动刷新到8位的倍数上的文件流中。当然,这不是唯一能做到这一点的方法,所以选择最好的方法。