Поиск самого длинного шаблона в массиве байтов в C#

Мне нужно написать эффективный и быстрый метод поиска массива байтов для данного шаблона. Я пишу это так, как вы думаете, как улучшить? И у него есть одна ошибка, он не может вернуть совпадение с длиной 1.

public static bool SearchByteByByte(byte[] bytes, byte[] pattern)
    {
        bool found = false;
        int matchedBytes = 0;
        for (int i = 0; i < bytes.Length; i++)
        {
            if (pattern[0] == bytes[i] && bytes.Length - i >= pattern.Length)
            {
                for (int j = 1; j < pattern.Length; j++)
                {
                    if (bytes[i + j] == pattern[j])
                    {
                        matchedBytes++;
                        if (matchedBytes == pattern.Length - 1)
                        {
                            return true;
                        }
                        continue;
                    }
                    else
                    {
                        matchedBytes = 0;
                        break;
                    }
                }
            }
        }
        return found;
    }

Есть предложения?

5
задан Hlavson 27 March 2012 в 12:19
поделиться