C++ 中的霍夫曼编码文件

Huffman coding file in c++

我正在用 C++ 实现霍夫曼编码,我可以成功构建霍夫曼树并且可以 encode/decode 字符串。

接下来我想做的是 encode/decode 文件,但我遇到了一些问题。 我正在使用 bool 向量来包含代码字。我的问题是:我只能将字节写入文件。我如何一点一点地写?有没有我可以使用的图书馆?

另一件事是,如果我想解码文件,我需要树本身(或代码 table)。序列化树的最佳方法是什么?

如有任何帮助,我们将不胜感激。

太糟糕了,C++ 布尔向量的内部格式是未定义的,因为它很可能已经是压缩位了。

无论如何,您将使用 <<>>& 运算符在编码端将位打包为字节,并在解码端将位解包边。假设您知道一个字节由八位组成,那么这就很简单了。

关于传输霍夫曼码,请阅读规范霍夫曼码。您不需要发送代码,只需发送每个符号的代码长度(以位为单位)。为了提高效率,可以使用 运行-length 和 Huffman 编码对长度序列本身进行压缩。有关示例,请参见 Deflate format