有一堆数字,都是68开始16结尾的,如68 02 31 94 11 00 00 68 11 04 33 32 34 33 89 16 FE FE FE FE 68 02 31 94 11 00 00 68 91 0C 33 32 34 33 88 34 33 33 88 34 33 33 55 16 68 02 31 94 11 00 00 68 11 04 33 32 35 33 8A 16 FE FE FE FE 68 02 31 94 11 00 00 68 91 0C 33 32 35 33 33 33 33 33 33 33 33 33 AA 16 68 02 31 94 11 00 00 68 11 04 33 32 36 33 8B 16 这样的,我想把每一个68开始16结尾的数做一组然后进行一些操作,请问这要怎么一个个的截取出来啊,我想截取出后进行操作然后继续截取继续操作。。急求大家了

解决方案 »

  1.   

    大神来了
         String[] Array = "68 02 31 94 11 00 00 68 11 04 33 32 34 33 89 16 FE FE FE FE 68 02 31 94 11 00 00 68 91 0C 33 32 34 33 88 34 33 33 88 34 33 33 55 16 68 02 31 94 11 00 00 68 11 04 33 32 35 33 8A 16 FE FE FE FE 68 02 31 94 11 00 00 68 91 0C 33 32 35 33 33 33 33 33 33 33 33 33 AA 16 68 02 31 94 11 00 00 68 11 04 33 32 36 33 8B 16".Split(' ');
                    foreach (String s in Array)
                    {
                        MessageBox.Show(s);
                    }
      

  2.   

    做个2维数组可以么?
    while
    str[0][0] = 68
    val == 16 时
    str[0][n] = 16
    下循环
    str[1][0] = 68
    str[1][n] = 16
      

  3.   


                string str = @"68 02 31 94 11 00 00 68 11 04 33 32 34 33 89 16 FE FE FE FE 68 02 31 94 11 00 00 68 91 0C 33 32 34 33 88 34 33 33 88 34 33 33 55 16 68 02 31 94 11 00 00 68 11 04 33 32 35 33 8A 16 FE FE FE FE 68 02 31 94 11 00 00 68 91 0C 33 32 35 33 33 33 33 33 33 33 33 33 AA 16 68 02 31 94 11 00 00 68 11 04 33 32 36 33 8B 16";
                Regex reg = new Regex(@"68[\s\S]*?16");
                MatchCollection mc = reg.Matches(str);
                foreach (Match m in mc)
                {
                    MessageBox.Show(m.Value);
                }
    //对m.Value做处理即可
      

  4.   


    class CsdnDemo
        {
            public static void test()
            {
                var str = "68 00 68 11 04 33 32 34 33 89 16 FE FE FE FE 68 11 00 00 68 91 0C 16 68 16 FE FE FE FE 68 02 68 91 0C 33 AA 16 68 68 16";
                var arr = ToArray(str);
                foreach (var s in arr)
                {
                    Console.WriteLine("*" + s + "*");
                }            //var str = "68 02 31 94 11 00 00 68 11 04 33 32 34 33 89 16 FE FE FE FE 68 02 31 94 11 00 00 68 91 0C 33 32 34 33 88 34 33 33 88 34 33 33 55 16 68 02 31 94 11 00 00 68 11 04 33 32 35 33 8A 16 FE FE FE FE 68 02 31 94 11 00 00 68 91 0C 33 32 35 33 33 33 33 33 33 33 33 33 AA 16 68 02 31 94 11 00 00 68 11 04 33 32 36 33 8B 16";
            }        public static string[] ToArray(string str)
            {
                var chars = str.ToCharArray();
                var len = chars.Length;
                bool flag = false;
                string v = "";
                List<String> ret = new List<String>();
                for (int i = 0; i < len; i++)
                {
                    if (i < len - 2 && chars[i] == '6' && chars[i + 1] == '8' && !flag)
                    {
                        var c1 = chars[i];
                        var c2 = chars[i + 1];
                        v += c1.ToString() + c2.ToString();
                        i += 1;
                        flag = true;
                    }
                    else if (i < len - 2 && chars[i] == '1' && chars[i + 1] == '6')
                    {
                        var c1 = chars[i];
                        var c2 = chars[i + 1];
                        v += c1.ToString() + c2.ToString();
                        flag = false;
                        ret.Add(v);
                        v = string.Empty;
                    }
                    else
                    {
                        if (flag)
                        {
                            v += chars[i];
                        }
                    }
                }
                return ret.ToArray();
            }
        }
      

  5.   

    tring c = this.richTextBox1.Text;//获取数据源
                string[] arr = new string[] {c};//将数据存入数组
                foreach (string s in arr)//循环数组中字符串
                {
                    if (s.StartsWith("68") && s.EndsWith("16"))//判断68开始16结束的字符串
                    {
                        string[] arr1 = s.Split(' ');//下面是进行的帧是否正确的判断操作没问题。
                        int L = int.Parse(arr1[9], System.Globalization.NumberStyles.AllowHexSpecifier);
                        string[] D = arr1.Skip(10).Take(arr1.Length - 10 - 2).ToArray();
                        if (L == D.Length)
                        {
                            MessageBox.Show("正确!");
                        }
                        else
                            MessageBox.Show("错误!");
                    }
                    else
                        MessageBox.Show("数据有误!");
                }         
    问题是怎么不能循环的取出68.。。16的字符串惊醒判断呢,如果只是一个68.16的字符串的话就可以
      

  6.   

    我知道我错在哪里了,foreach (string s in arr)是把arr所有的内容都付给s了,我原本以为是s从arr中逐个的读取,所以我的程序完不成那功能
      

  7.   

    把arr所有的数全都给了s,所以下面的判断不是一组数的时候都会给报错数据错误
     if (s.StartsWith("68") && s.EndsWith("16"))这句话也根本没起到分割成一组一组的作用
    妈的全错了有什么办法吗?我现在就一个问题,怎么把这么一堆数据每次分隔成一组我判断一次分一组我判断一次
    到底该怎么分成68到16的一组组数据啊?