2009-08-26 5 views
0

네트워크 연결에서 중복이없고 바이트 배열이 올바른지 확인하는 가장 쉬운 방법은 무엇입니까?C# 바이트 배열에 중복이 없음을 확인하십시오.

+0

중복되지 않는다고 할 때 당신은 무엇을 의미합니까? 당신은 같은 바이트 값이 배열에 tiwce로 표시되지 않을까요? 그리고 순서에 따라 정렬 된 것을 의미합니까? –

+1

순서는? 네가 보낸 명령은? TCP (스택 하단)에는 오류 검색 시스템이 내장되어있어 (제 3자가 고의적으로 조작 한 경우를 제외하고) 보내는 데이터가 대상에 도착할 수 있도록합니다. http://en.wikipedia.org/wiki/ Transmission_Control_Protocol # Error_detection –

답변

2

256 개의 부울 배열을 만들고 바이트 배열을 하나씩 반복합니다.

발생할 때 배열의 각 값을 true로 설정하십시오. 당신은 이미 진정한 가치가 발생하면 다음 바이트 배열 내가 확실히 당신이 "바이트 배열 순서에"무엇을 의미하는 따르지 않는

잘못된 형식으로되어 당신은 또한 bitarray를 사용할 수

비트

예 :

bool CheckForDuplicates(byte[] arr) 
    { 
     bool[] map = new bool[256]; 

     foreach (byte b in arr) 
     { 
      if (map[b] == true) 
       return false; 
      map[b] = true; 
     } 
     return true; 
    } 
+0

+1하지만 if (map [b] == true)는 if (map [b])가되어야합니다. 개인적인 선호도. – Kleinux

3

당신이 .NET 3.5에 있다면, 그것은 독특한 아이템을 얻을 꽤 쉽게 ...

var ba = new byte[6]; 

ba[0] = 1; 
ba[1] = 1; 
ba[2] = 2; 
ba[2] = 2; 
ba[3] = 3; 
ba[4] = 4; 
ba[5] = 4; 

var res = ba.Distinct().ToArray(); // unique 

"순서대로"의미하는 것을 설명 할 수 있습니까?

1

당신은 또는 동일한 값이 두 번 발생하면 당신이 할 수있는 등 예외 무엇을 던져하지 않는 경우 :

var set = new HashSet<byte>(byteArray); 

당신이 경우 순서대로 됨으로써 당신이 정렬 LINQ 확장 메서드를 호출 할 수 있습니다 분류 의미를 위에서 설정 한 개체에