2017-01-26 12 views
0

私は11111111000000001010101011111111のようなデータをいくつか持っています。私はデータの最初の8ビットを分離し、エラーコードを表示する必要があります。そして、最初の8ビットの後に、私は8のグループの残りのビットを次々に読み取らなければなりません。正しいデータ大きなデータビットからビットを分離する方法は?

データを8ビットのグループに分けて順番に読み込むことに成功しましたが、エラーコードとデータを区別することができません。

私は

正しいデータではなく、エラーデータにいくつかの操作を実行したいと私は、データの文字列としてデータビットを格納し、リストの方法によってそれらを分離しています。

欲しい出力

エラーコード11111111

正しいデータたまま -

00000000 
10101010 
.. 
.. 

iが8

のグループのビットを分離するために使用されるコード
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(); 
     } 
関連する問題