如何保存霍夫曼代码

时间:2012-11-06 03:14:29

标签: huffman-code

  

可能重复:
  need help on how to encode words using huffman code

假设我有以下霍夫曼编码符号

A - 0 B - 10 C - 110 D - 111 并且您想要编码序列

A B A A C D A D B B. 然后我得到这样的二进制代码: 01000110 11101111 010

(01000110)= 0x46 (11101111)= 0xEF

010 = ???? 如果此代码中没有010,我可以将这些字节保存到文件中。 现在我应该如何处理这个010?保存为00000010?这不起作用。

2 个答案:

答案 0 :(得分:2)

你需要一些标题用于你的编码数据(一个字节应该足够用于此目的,但你可能需要更多,具体取决于你真正需要的),你可以存储你在最后一个数据中有多少填充位字节。因此,在您的010示例中,您的标头字节将包含5,因为您需要忽略最后一个字节末尾的5位。

找到哪些值存储在实际有用的位中是需要逐位处理的,因为您可以使用重叠代码,其中代码可以在两个字节之间分割 - 因此某些位可能位于字节{ {1}}并且某些位可能与字节N重叠。

答案 1 :(得分:0)

您可以包含一个标记已完成的结束字节,然后可能包含另一个字节,表示最后一个数据字节中存储了多少项。然后,您可以了解最后一个字节中的剩余字符,并了解实际有效位数。