2009-08-26 7 views
0

Was ist der einfachste Weg, um sicherzustellen, dass es keine Duplikate gibt und ein Byte-Array in Ordnung ist, sagen wir von einer Netzwerkverbindung?C# Sicherstellen, dass keine Duplikate im Byte-Array

+0

Was meinst du, wenn du nicht Duplikate sagst? Sie nicht, was der gleiche Byte-Wert, um Tiwce im Array zu erscheinen? und indem Sie in Ordnung sind, meinen Sie, sortiert? –

+1

Welcher Auftrag? Die Reihenfolge, dass Sie es gesendet haben? TCP (niedriger auf dem Stack) verfügt über ein eingebautes Fehlererkennungssystem, das dafür sorgt, dass die von Ihnen gesendeten Daten (sofern nicht absichtlich von Dritten manipuliert) am Ziel ankommen: http://en.wikipedia.org/wiki/ Transmission_Control_Protocol # Error_detection –

Antwort

2

Erstellen Sie ein Array von 256 boolean und durchlaufen Sie nacheinander die Byte-Array.

Setzen Sie jeden Wert im Array auf True, wenn Sie darauf stoßen. wenn Sie einen bereits wahren Wert stoßen dann das Byte-Array in einem ungültigen Format ist

ich nicht ganz folgen, was Sie mit dem „Byte-Array ist, um“ Bit

könnten Sie auch einen BitArray verwenden

Beispiel:

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, aber das if (map [b] == true) sollte eigentlich nur if sein (map [b]). Persönliche Präferenz schätze ich. – Kleinux

3

Wenn Sie auf .NET 3.5 sind, ist es ziemlich einfach, einzigartige Gegenstände zu bekommen ...

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 

Können Sie erklären, was Sie mit "In Ordnung" meinen?

1

, wenn Sie, was nicht eine Ausnahme zu werfen oder so, wenn der gleiche Wert angetroffen wird zweimal könnten Sie tun:

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

, wenn Sie nach sortiert, um meine wobei Sie die LINQ-Extension-Methode aufrufen sortieren auf das Objekt von oben gesetzt

Verwandte Themen