如何解码没有前缀 属性 的霍夫曼编码

How to decode a huffman coding without the prefix property

我正在尝试解码使用 Modified Huffman Coding 编码的缓冲区。

这里是缓冲区的开头:000111100001111011111010001000011101000011101000011110

translation table 来看,Modified Huffman 所需的前缀 属性 似乎无法保证。根据table,我看到00011表示7B,但000111表示1W。在这种情况下,如何解码上面的缓冲区?我读的 table 是错误的还是我遗漏的算法有一些细微差别?

改进的霍夫曼编码使用白色和黑色像素的交替编码。编码总是以白色像素开始。因此,在您的示例中,缓冲区解码为 000111=1W10=3B000111=1W 等。

修改后的霍夫曼编码假定您从 运行 个白色像素开始,如您 link 中的翻译 table 中所述。如果不是,则使用 运行 个“0”白色像素的代码。

00110101 = 0W
000111   = 1W
and so on...

在您的示例中,您从 1W 000111 开始,然后是 3B 10 等等...

正如约翰所指出的,您的翻译 table 是错误的。 可以在这里找到正确的 table:Correct Modified Huffman Coding Translation Table