2009-08-26 12 views
0

重複がなく、バイト配列が確実に存在することを確認する最も簡単な方法は何ですか?たとえばネットワーク接続ですか?C#バイト配列に重複がないようにする

+0

重複していないと言ったらどういう意味ですか?あなたは同じバイト値が配列内に何を表示するのではないのですか?そして順番に並んでいるとソートされているのですか? –

+1

どちらの注文?あなたが送った注文ですか? TCP(スタックの下側)には、エラー検出システムが組み込まれています。送信するデータは、(第三者によって意図的に改ざんされている場合を除いて)宛先:http://en.wikipedia.org/wiki/に確実に届きます。 Transmission_Control_Protocol#Error_detection –

答えて

2

256個のブール値の配列を作成し、バイト配列を1つずつ反復処理します。

遭遇した場合、配列の各値を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の拡張メソッドを呼び出すことができますソート平均値を上のオブジェクトセット

関連する問題