Javaで可変長ビット文字列を使用してバイナリデータをデコードする最良の方法を誰か教えてもらえますか?
例えば:
バイナリ データは 10101000 11100010 01100001 01010111 01110001 01010110 です。
次の 01、100、110、1110、1010 のいずれかの最初の一致を見つける必要があるかもしれません...
この場合、一致は 1010 になります。残りのバイナリ データについても同じことを行う必要があります。ビット文字列の長さは最大 16 ビットで、バイト境界を越えることができます。
基本的に、ヘッダーのハフマン テーブルから作成したビット文字列を使用して、JPEG をハフマン デコードしようとしています。私はそれを行うことができますが、それは非常に面倒です。バイナリデータを含むすべてを最初に Stringbuffers に変換していますが、それが正しい方法ではないことはわかっています。
文字列バッファにすべてをロードする前に、バイナリの数値だけを使用してみましたが、もちろん、00011 のようなコードの先頭の 0 を無視することはできません。ビットごとの演算子などを使用して、何らかの巧妙な方法があるはずです。これですが、ビットマスクや左方向シフトなどを説明するページをじっと見つめていましたが、まだ手がかりがありません!
助けてくれてありがとう!
編集:
すべての提案をありがとう。ハフマンのものでは標準的な方法のように思われるので、私は二分木アプローチを採用しました。ハフマン コードはツリーを使用して作成されるため、これは非常に理にかなっています。また、検索に必要なバイナリ データを大きな整数に格納する方法についても検討します。複数の回答を正解としてマークする方法がわかりませんが、ありがとうございます。