2011-01-15 7 views
0

바이트 배열 내에서 4 바이트 시퀀스의 첫 번째 인스턴스의 위치를 ​​효율적으로 찾을 수있는 방법은 무엇입니까? 전체 배열 또는 내장 메서드를 반복하는 것보다 더 효율적인 것이 있습니까?바이트 배열의 짧은 시퀀스 위치 찾기

바이트 배열을 통해 CrLF 쌍을 검색하고 있습니다. InStr에 대한 문자열로 변환 할 수 없습니다. 원래 바이트 배열에이 문자열의 위치가 필요하기 때문입니다.

문자열 부분과 이진 부분 사이에 HTTP 헤더에 비슷한 (잘이 부분과 비슷합니다) 부분을 구분하기 때문에이 위치를 파악하려고합니다. 문자열 부분이 있고 내용이 시작되기 전에 두 개의 CrLf이 있습니다.

+0

일부 예제를 VB로 변환하거나 참조 된 C# 프로젝트에서 사용하는 것이 필요하지만 좋은 대안은 다음과 같습니다. http://stackoverflow.com/questions/283456/byte-array-pattern- 수색. – rsenna

답변

1

평균은 선형보다 나은 Boyer-Moore 알고리즘을 사용할 수 있습니다.

HTH!

+0

니스! 이 알고리즘을 구현하기 위해 노력할 것입니다. – Brad

1

데이터 집합 (정렬/특별 주문)에 대해 아무 것도 가정하지 않으면 O (n) 알고리즘을 사용할 수 있습니다. 즉, 전체 배열을 한 번 살펴 보는 것입니다.

+0

제 질문에 대한 답변입니다. 고맙습니다! – Brad