我有大量的二进制数据说(11111111000000001010101011111111
)。我必须将这些数据分成数据字节(8位)。这样就形成了一组字节。
在分组为8位数据a后,我希望前8位数据作为第一输出。然后在读取前8位后,我想进一步读取下8位,依此类推。
例如,如果我的数据是(11111111000000001010101011111111
),那么我想首先阅读11111111
然后00000000
再阅读10101010
,最后阅读11111111
。
答案 0 :(得分: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循环迭代列表,并且您可以根据需要访问您的数据格式。
答案 1 :(得分: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++;
}
答案 2 :(得分: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); }
}