2011-11-07 4 views
1

바이트 []를 (를) 분할해야합니다. 내가 존재 "0xc0과"바이트 [] 사방을 분할 할 방법바이트를 나누는 방법 []

byte[] m_B = new byte[] { 0x01, 0x02, 0x03, 0xc0, 0x04, 0x05, 0x06, 0xc0, 0x07, 0x08, 0x09 }; 

:

나는 []이의 모습 원래 바이트의 일부 데이터가?

+1

일부 소스를 보여주세요 ... 당신은 무엇을 시도? 작동하지 않는 것은 무엇입니까? – Yahia

+1

귀하의 질문은 Windows Forms와 관련이 없습니다. –

+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