如何将位与大数据位分开?

时间:2017-01-26 14:32:08

标签: c#

我有一些像11111111000000001010101011111111这样的数据。我必须将前8位数据分开并显示错误代码。然后在前8位后,我必须读取一组8中的剩余位,一个接一个地作为正确的数据

我成功地将数据分成8位组并一个接一个地读取它们,但是我无法将它们分离为错误代码和正确的数据。

因为我想对正确的数据执行某些操作,而不是对错误数据执行操作

我已将数据位存储为数据字符串,并按列表方法分隔。

我希望输出为 -

错误代码 11111111

正确的数据 -

00000000
10101010
..
..

我用于分离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);          
}

2 个答案:

答案 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个符号。

答案 1 :(得分: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();
        }