【问题标题】:Decoding using huffman code使用霍夫曼码解码
【发布时间】:2014-08-10 18:59:30
【问题描述】:

我创建了一个程序来读取文件并将其逐个字符编码为可变长度的二进制代码。前任。最常见的字符是 110,下一个常见的字符是 0010,等等。然后我将整个二进制代码放入一个文本文件中。所以代码看起来像 11010011001110000110001010110110... 并且它继续。我将如何将二进制编码解码回字符?

【问题讨论】:

  • 您可能还需要 Huffman 树。 ;-)
  • 是的,您需要以某种方式将解码密钥与编码数据一起传输。处理此问题的几种方法,可以作为数据的一端或另一端的单独结构,或者作为内联数据,其中每个新代码在第一次使用时被识别。
  • 一旦您可以恢复字符代码映射(通常通过使用规范霍夫曼代码并仅存储代码长度来完成),我会建议基于表的解码。

标签: c binary binary-data huffman-code


【解决方案1】:

如果你真的生成了一个霍夫曼代码,那么它就是一个prefix code。也就是说,没有有效代码也是另一个有效代码的前缀。因此,您只需从头开始,任何与这些位匹配的代码都是第一个符号。删除这些位并重复。您的第一个符号与代码 101 相关联。删除 101,然后在代码中查找 1、10、100、1001、10011 等,直到找到匹配项。

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多