我有一些像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);
}
答案 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();
}