Найти расположение короткой последовательности байтов в байтовом массиве - PullRequest
0 голосов
/ 16 января 2011

Как я могу эффективно найти местоположение первого экземпляра четырехбайтовой последовательности в байтовом массиве? Есть ли что-то более эффективное, чем цикл по всему массиву или встроенный метод?

Я ищу в байтовом массиве пару CrLF. Я не могу сначала преобразовать его в строку для InStr, потому что мне нужна позиция в исходном байтовом массиве.

Я пытаюсь выяснить местоположение этого, поскольку оно разграничивает строковую часть и двоичную часть, аналогично (ну, точно так же, как для этой части) заголовку HTTP. Есть строковая часть и две CrLf до начала содержимого.

Ответы [ 2 ]

1 голос
/ 16 января 2011

Вы можете использовать алгоритм Бойера-Мура , который в среднем лучше линейного.

HTH!

1 голос
/ 16 января 2011

Если не брать в расчет ничего о наборе данных (отсортированном / специальном порядке), лучше всего использовать алгоритм O (n), что означает просмотр всего массива один раз.

...