Нахождение байтового массива в C # - PullRequest
1 голос
/ 03 ноября 2011

Мне было интересно, как лучше всего найти индекс подмассива из другого байтового массива в C #.Например, если у меня в качестве основного массива есть следующее:

byte[] inputArray = {0xFF,0xDD,0xA,0xF,0x1,0x2,0x78,0x05,0x00,0x01};
byte[] tobeFound = {0x78,0x05};

Теперь я хочу найти байтовый массив "tobeFound" внутри inputArray.И я должен получить индекс 6. Это короткий пример.Оба массива могут быть очень большими.

Так к чему мне идти?LINQ, Array.IndexOf ??Мне также нужна хорошая производительность.

Спасибо за любые советы и обмен опытом!

1 Ответ

7 голосов
/ 03 ноября 2011

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

Вот то, что кажетсябыть достойной реализацией Бойера-Мура в C # для струн (наряду с турбо Бойером-Муром и другим, о котором я никогда не слышал).Преобразование их для использования Byte[] должно быть тривиальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...