【问题标题】:How to decompress a huffman encoded file?如何解压缩霍夫曼编码文件?
【发布时间】:2020-04-11 02:01:29
【问题描述】:

所以一旦我构建了我的霍夫曼树并将一个文件压缩到每个字符的相应代码中,我该如何解压缩文件?在压缩文件中,我必须插入某种信息,表示为解压缩文件而构建的霍夫曼树。我最初想用它的值来存储字符,例如:

例如 a: 110 和 b:11。但是,在读取压缩文件时,如果 a 和 b 都以 11 开头,我将如何区分 a 和 b?

我觉得我的方法行不通,有没有人有更好的想法?

【问题讨论】:

    标签: c++ huffman-code


    【解决方案1】:

    您对霍夫曼编码有误解。霍夫曼编码码表中的任何字符码都不能是其他字符的前缀。如果代码中的“a”为 110,则“b”不得以 1、11 或 110 开头。每个字符不得共享其前缀。

    【讨论】:

    • 谢谢!这更有意义。那么当从一个文件中读取时,我会逐个字符地读取它吗?
    • 迈克,霍夫曼表中每个代码的大小是可变的。实际上,与 ASCII 等固定长度字符相比,这就是霍夫曼树减小其大小的方式。您可以逐字节读取数据,但您应该逐位处理它。假设你读到一个字节的数据,01011110,有两个字符的编码是010和11,那么你可以用位运算解码,发现剩下010、11、11和0,应该是在下一个字节中处理。
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多