Ciao, potresti cercare il primo byte utilizzando un'istruzione IndexOf sull'array di byte (che comunque è veloce), e se lo trovi, allora verifichi la corrispondenza dei rimanenti, così:
public static void Main()
{
byte[] sequenza = { 1, 2, 3, 5 };
byte[] contenitore = { 2, 6, 7, 1, 2, 3, 5, 9, 2, 1, 2, 3, 5 };
int inizio = 0;
int fine=contenitore.Length-sequenza.Length;
while (inizio > -1 && inizio <= fine)
{
//cerca il primo byte della sequenza
inizio = Array.IndexOf(contenitore, sequenza[0], inizio);
if (inizio > -1 && inizio<=fine)
{
//ha trovato il primo, allora confronta i rimanenti
if (Confronta(sequenza,contenitore,inizio))
{
Console.WriteLine("Sequenza trovata alla posizione: "+inizio.ToString());
break;
}
inizio++;
}
}
}
public static bool Confronta(byte[] a, byte[] b, int trovato)
{
for (int i=1; i<a.Length; i++)
{
//confronta i byte dal secondo in poi
if (a[i] != b[trovato+i])
return false;
}
return true;
}