假设我有以下霍夫曼编码符号
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?这不起作用。
答案 0 :(得分:2)
你需要一些标题用于你的编码数据(一个字节应该足够用于此目的,但你可能需要更多,具体取决于你真正需要的),你可以存储你在最后一个数据中有多少填充位字节。因此,在您的010
示例中,您的标头字节将包含5
,因为您需要忽略最后一个字节末尾的5位。
找到哪些值存储在实际有用的位中是需要逐位处理的,因为您可以使用重叠代码,其中代码可以在两个字节之间分割 - 因此某些位可能位于字节{ {1}}并且某些位可能与字节N
重叠。
答案 1 :(得分:0)
您可以包含一个标记已完成的结束字节,然后可能包含另一个字节,表示最后一个数据字节中存储了多少项。然后,您可以了解最后一个字节中的剩余字符,并了解实际有效位数。