2017-01-26 1 views
0

11111111000000001010101011111111과 같은 데이터 비트가 있습니다. 데이터의 처음 8 비트를 분리하고 오류 코드을 표시해야합니다. 그리고 첫 번째 8 비트 이후에 나는 나머지 비트를 8 개 그룹에서 하나씩 읽어야합니다. 올바른 데이터는입니다.큰 데이터 비트에서 비트를 분리하는 방법은 무엇입니까?

8 비트 그룹으로 데이터를 분리하고 차례로 읽는 데 성공했지만 오류 코드와 올바른 데이터로 구분할 수는 없습니다.

I 올바른 데이터가 아닌 I의 데이터 스트링으로 데이터 비트를 저장 목록 방법에 의해이를 분리 한

오류 데이터에 어떤 연산을 수행 할 같이

.

I 원하는 출력

에러 코드11111111

올바른 데이터 시스 - -

00000000 
10101010 
.. 
.. 

제가 제

그룹의 비트들을 분리하는 데 사용되는 코드
string s = "1111111100000000101010101111111111101011000111011011000101011111000000011111000100000111101011101111111001011110010111101111001100001011000000101110001011001111"; 
Console.WriteLine("Packet length : "+ s.Length); 

List<string> yourStringList = new List<string>();   

for (i = 0; i < s.Length; i = i + 8) 
{ 
    yourStringList.Add(s.Substring(i, 8)); 
} 

foreach (string st in yourStringList) 
{ 
    Console.WriteLine("DATA :{0}", st);   
} 
+1

'yourStringList [0]'오류 코드입니다 –

답변

0

인쇄 오류 코드를 먼저 한 후 데이터 :

또한
Console.WriteLine("ERROR CODE :{0}", yourStringList[0]);  
foreach (string st in yourStringList.Skip(1)) 
{ 
    Console.WriteLine("DATA :{0}", st);   
} 

는 경우를 고려하여 문자열 길이가 length % 8 != 0 경우 그. 이 경우 마지막부터 시작하여 8 개의 기호로 읽어야합니다.

0

당신은 이런 식으로 작업을 수행 할 수 있습니다 :

static void Main(string[] args) 
     { 

      string remainingBits = "010011010100110101000101010011010100110101001101010011010100110101101111"; 
      List<string> octetCollection = new List<string>(); 
      for (int i = 0; i < remainingBits.Length/8; i++) 
      { 
       octetCollection.Add(remainingBits.Substring(i * 8, 8)); 
      } 

      foreach (var s in octetCollection) 
      { 
       //Do whatever action on each octet 
       Console.WriteLine(s); 
      } 
      Console.WriteLine("Count: " + octetCollection.Count.ToString()); 
      Console.ReadLine(); 
     } 
관련 문제