如何在C#中将大数据位读取为数据字节

时间:2017-01-25 12:09:08

标签: c# c#-4.0

我有大量的二进制数据说(11111111000000001010101011111111)。我必须将这些数据分成数据字节(8位)。这样就形成了一组字节。

在分组为8位数据a后,我希望前8位数据作为第一输出。然后在读取前8位后,我想进一步读取下8位,依此类推。

例如,如果我的数据是(11111111000000001010101011111111),那么我想首先阅读11111111然后00000000再阅读10101010,最后阅读11111111

3 个答案:

答案 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); }
}