2011-11-07 12 views
1

バイト[]を分割する必要があります。バイトを分割する方法[]

私は次のようになり、元バイト[]内のいくつかのデータがあります。

私は[]どこでも「0xc0では」存在するバイトを分割する方法を
byte[] m_B = new byte[] { 0x01, 0x02, 0x03, 0xc0, 0x04, 0x05, 0x06, 0xc0, 0x07, 0x08, 0x09 }; 

を?

+1

いくつかのソースを表示してください...あなたは何を試してみましたか?何がうまくいかないの? – Yahia

+1

あなたの質問はWindowsフォームとは関係ありません。 –

+0

なぜアレイを通過して0xc0に到達するまで他のものにコピーしていないのですか?それで、あなたが望むものなら何でもそれを行い、残りのシーケンスを続けます。 –

答えて

6

は、単にあなたのバッファの上に列挙し、あなたが分割するバイトに達するたびサブセットを返します。

IEnumerable<byte[]> Split(byte splitByte, byte[] buffer) 
{ 
    List<byte> bytes = new List<byte>(); 
    foreach(byte b in buffer) 
    { 
     if (b != splitByte) 
      bytes.Add(b); 
     else 
     { 
      yield return bytes.ToArray(); 
      bytes.Clear(); 
     } 
    } 
    yield return bytes.ToArray(); 
} 
+3

代わりに 'ArraySegment 'を使うことができます。つまり、その場所のすべてのバイトをコピーする必要はありません。 – thecoop