제공된 바이트 배열에서 지정된 바이트 패턴의 위치를 확인하는 것은 다양하고 효율적인 방법을 사용하여 달성할 수 있습니다.
간단한 접근 방식은 다음 C# 코드 조각에 표시된 대로 Locate 메서드를 사용하는 것입니다.
<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>
이 방법은 먼저 빈 입력 또는 잘못된 검색 기준을 확인합니다. 이러한 조건이 충족되면 빈 배열이 반환됩니다. 그렇지 않으면 입력 배열을 반복하고 IsMatch 도우미 메서드를 사용하여 패턴이 각 위치에서 일치하는지 확인합니다. 일치하는 항목이 발견된 위치는 목록에 저장되고 배열로 반환됩니다.
또는 SearchBytePattern 메서드 사용을 고려할 수도 있습니다. 또한 바이트 배열에서 효율적인 패턴 일치를 위한 기능도 제공합니다.
<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>
이 구현에서 메서드는 바이트 배열과 바이트 패턴을 입력으로 받고 잠재적 일치 항목의 시작 위치를 유지합니다. 배열을 반복하면서 각 위치의 바이트가 패턴의 해당 바이트와 일치하는지 확인합니다. 정확히 일치하는 항목이 발견되면 일치하는 위치 목록에 일치 항목의 시작 위치를 추가합니다.
위 내용은 C#의 바이트 배열 내에서 바이트 패턴을 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!