Может кто-нибудь сказать мне лучший способ декодировать двоичные данные с помощью битовых строк переменной длины в Java?
Например:
Двоичные данные: 10101000 11100010 01100001 01010111 01110001 01010110
Мне может понадобиться найти первое совпадение любого из следующих 01, 100, 110, 1110, 1010 ...
В этом случае совпадение будет 1010. Затем мне нужно сделать то же самое для оставшейся части двоичных данных. Строки битов могут иметь длину до 16 бит и выходить за границы байтов.
По сути, я пытаюсь декодировать JPEG в формате Хаффмана, используя битовые строки, которые я создал из таблиц Хаффмана в заголовках. Я могу сделать это, только это очень грязно, я превращаю все, включая двоичные данные, в Stringbuffers сначала, и я знаю, что это не правильный путь.
Прежде чем загружать все в строковые буферы, я пытался использовать только числа в двоичном формате, но, конечно, я не могу игнорировать начальные 0 в коде, подобном 00011. Я уверен, что должен быть какой-то умный способ, использующий побитовые операторы Я хотел бы сделать это, но я пялился на страницы, объясняющие битовые маски, сдвиги влево и т. д., и до сих пор не понимаю!
Большое спасибо за любую помощь!
EDIT:
Спасибо за все предложения. Я пошел с подходом бинарного дерева, поскольку он кажется стандартным для вещей Хаффмана. Это имеет смысл, поскольку коды Хаффмана создаются с использованием деревьев. Я также рассмотрю хранение двоичных данных, которые мне нужны для поиска в большом целом числе. Не знаю, как пометить несколько ответов как правильные, но все равно спасибо.