エンコードされたタグを検索し、それらによって識別されたデータを取得するために必要なファイルがあります。タグは4バイトの長さで、可変長のASCII文字列またはリトルエンディアンでエンコードされた2バイト整数値のいずれかを識別します。
タグはすべて4バイト境界にあり、ファイルの先頭から最初の2000バイト以内にあるように見えます。私はファイルを検索するさまざまな方法を試しました。動作したのは、10進整数値を使用したバイトごとの比較だけです。
SOで見つかった解決策の1つですが、この問題に対して正確に提案されたわけではありません:indexOfSubList()。このテストを試しましたが、結果は-1です。
byte[] needle = {68,73,67,77};
byte[] hayStack = {00, 01, 68,73,67,77, 11, 45};
location = Collections.indexOfSubList(Arrays.asList(hayStack), Arrays.asList(needle));
私は決してこのコードに夢中になっているわけではなく、他の考えや解決策をいただければ幸いです。