2017-01-25 2 views
-1

У меня есть большие биты двоичных данных (11111111000000001010101011111111). Я должен разделить эти данные в байтах данных (8 бит). Таким образом, формируется группа байтов.Как читать большие биты данных как байты данных в C#

После сгруппировки как 8 бит данных a, я хочу, чтобы первые 8 бит данных были в качестве первого выхода. Затем, прочитав эти первые 8 бит, я хочу продолжить чтение следующих 8 бит и так далее.

, например, если мои данные (11111111000000001010101011111111), то я хочу, чтобы прочитать первый 11111111 затем 00000000 затем 10101010 и, наконец, 11111111.

+2

Вы должны предоставить более подробную информацию, Что 11111111000000001010101011111111 проводится в ? Постепенно? BitArray? строка? Что вы подразумеваете под 11111111? целое число 255? строка '1'? –

+1

«У меня есть большие биты двоичных данных» <--- где ?? –

+0

@ rory.ap По-видимому 'IEnumerable ' :) –

ответ

1

Если ваши данные хранятся в виде строки, и вы хотите, чтобы использовать его в качестве строки, вы можете сделать следующее:

 string s = "11111111000000001010101011111111"; 

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

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

     foreach (string st in yourStringList) 
     { 
      Console.WriteLine(st); //DO WHATEVER YOU NEED WITH YOUR STRING HERE 
     } 

Тогда вы можете перебирать список с помощью цикла foreach, и у вас будет доступ к вашим данным, отформатированным так, как вы хотите.

+0

Спасибо большое ... это сработало ... – pratik

+0

рад, что это помогло. если вы новичок в этом сообществе, не забывайте поднимать и принимать ответы. – NicoRiff

0

Вы можете сделать что-то вроде этого:

string bits = "1000101010101011111101010101010"; 
byte[] bytes = new byte[100]; 
int byteCount = 0; 
for (int i = 0; i < bits.Length; i += 8) 
{ 
    bytes[byteCount] = Convert.ToByte(bits.Substring(i, 8), 2); 
    byteCount++; 
} 
0

если вы хотите Перечислим через строку как массив байтов вы можете сделать:

var someBytes = "11111111000000001010101011111111"; 
foreach (string byteString in EnumerateBytes(someBytes)) 
{ 
} 

И EnumerateBytes:

private static IEnumerable<string> EnumerateBytes(string bytesString) 
{ 
    for (var i = 0; i < bytesString.Length; i = i + 8) { yield return bytesString.Substring(i, 8); } 
} 
Смежные вопросы