c++ - 压缩后将哈夫曼树写入文件

标签 c++ huffman-code

在插入所有实际的压缩文件数据后,我试图将霍夫曼树写入压缩文件。但是,我刚刚意识到一个问题,假设我决定一旦所有实际数据都写入文件,我将放入 2 个换行字符,然后写入树。 这意味着,当我读回内容时,这两个换行符(或实际上的任何字符)是我的分隔符。问题是,实际数据完全有可能也有两个相继的换行符,在这种情况下,我的分隔符检查将失败。 我在这里举了两个换行的例子,但对于任何字符串都是如此,我可以通过采用更长的字符串作为分隔符来颠覆问题,但这会产生两个不良影响: 1. 压缩数据中出现长字符串的可能性仍然很小。 2. 不必要地膨胀需要压缩的文件。

有人对如何将压缩数据与树数据分离有任何建议吗?

最佳答案

首先,以字节为单位写入树的大小。然后,编写树本身,然后编写内容本身。

读取时,首先读取大小,然后读取树(现在您知道要读取多少个字符),然后读取内容。

大小可以写为字符串,以换行符结尾 - 这样,您就知道第一个数字和换行符属于树的大小。

关于c++ - 压缩后将哈夫曼树写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8644931/

相关文章:

幕后的 C++ 模块

algorithm - 霍夫曼编码算法(优先队列与排序队列)

c - Huffman with C ,分段默认(核心转储)

python - 如何为霍夫曼编码和解码创建一棵树?

c++ - C++中char的类型(被C++入门解释搞糊涂了)

c++ - 函数模板在另一个类/命名空间中的特化?

c++ - 如何在 PlaySound 中将字符串作为 WAV 的名称传递?

c++ - 变量损坏 C++ 字符串 Visual Studio 2005

python - 创建霍夫曼代码时如何处理 '/n' ,'/t' 和类似的 ascii 键

algorithm - 霍夫曼编码的实际应用是什么?