谁能告诉我在java中使用可变长度位字符串解码二进制数据的最佳方法?
例如:
二进制数据为 10101000 11100010 01100001 01010111 01110001 01010110
我可能需要找到以下 01、100、110、1110、1010 中的任何一个的第一个匹配项...
在这种情况下,匹配将是 1010。然后我需要对其余的二进制数据执行相同的操作。位串最长可达 16 位并跨越字节边界。
基本上,我正在尝试使用从标题中的 Huffman 表创建的位字符串对 Huffman 解码 jpeg。我可以做到,只是它非常混乱,我首先将包括二进制数据在内的所有内容都转换为 Stringbuffers,我知道这不是正确的方法。
在我将所有内容加载到字符串缓冲区之前,我尝试只使用二进制数字,但我当然不能忽略像 00011 这样的代码中的前导 0。我确信必须有一些聪明的方法使用位运算符等来做这个,但我一直盯着解释位掩码和左移等的页面,我仍然不知道!
非常感谢您的帮助!
编辑:
感谢所有的建议。我已经采用了二叉树方法,因为它似乎是 Huffman 东西的标准方法。确实有意义,因为霍夫曼代码是使用树创建的。我还将研究存储需要在大整数中搜索的二进制数据。不知道如何将多个答案标记为正确,但同样感谢。