Menentukan kedudukan corak bait yang ditentukan dalam tatasusunan bait yang disediakan boleh dicapai menggunakan pelbagai kaedah yang cekap.
Pendekatan mudah ialah menggunakan kaedah Cari, seperti yang ditunjukkan dalam coretan kod C# berikut:
<code class="language-csharp">static int[] Locate(this byte[] self, byte[] pattern) { if (IsEmptyLocate(self, pattern)) return Empty; var list = new List<int>(); for (int i = 0; i < self.Length; i++) { if (IsMatch(self, pattern, i)) { list.Add(i); } } return list.ToArray(); }</code>
Kaedah ini mula-mula menyemak input kosong atau kriteria carian tidak sah. Jika syarat ini dipenuhi, tatasusunan kosong dikembalikan. Jika tidak, ia berulang pada tatasusunan input dan menggunakan kaedah pembantu IsMatch untuk menyemak sama ada corak sepadan pada setiap kedudukan. Kedudukan di mana padanan ditemui disimpan dalam senarai dan dikembalikan sebagai tatasusunan.
Sebagai alternatif, anda boleh mempertimbangkan untuk menggunakan kaedah SearchBytePattern. Ia juga menyediakan kefungsian untuk padanan corak yang cekap pada tatasusunan bait:
<code class="language-csharp">public static List<int> SearchBytePattern(byte[] byteArray, List<byte> bytePattern) { int start = -1; List<int> matches = new List<int>(); for (int i = 0; i < byteArray.Length; i++) { if (byteArray[i] == bytePattern[0]) { start = i; bool match = true; for (int j = 1; j < bytePattern.Count; j++) { if (i + j >= byteArray.Length || byteArray[i + j] != bytePattern[j]) { match = false; break; } } if (match) { matches.Add(start); } } } return matches; }</code>
Dalam pelaksanaan ini, kaedah menerima tatasusunan bait dan corak bait sebagai input dan mengekalkan kedudukan permulaan untuk padanan yang berpotensi. Ia berulang melalui tatasusunan, menyemak sama ada bait pada setiap kedudukan sepadan dengan bait yang sepadan dalam corak. Apabila padanan tepat ditemui, ia menambah kedudukan permulaan perlawanan pada senarai kedudukan sepadan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Corak Byte Dengan Cekap Dalam Tatasusunan Byte dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!