机器生成的数,一大堆,有规律,68 a0 a1 a2 a3 a4 a5 68 01 L D 12 16,其中只有L和D是变化的,而且D
的位数由L决定,例如L=04,则D的位数就是0*16+4=4个,所以D可能就出现31 32 33 34这样一组数,那这组数就变成
68 a0 a1 a2 a3 a4 a5 68 01 04 31 32 33 34 12 16,而且每一组数都是68开始,16结尾。。重点就是做一个软件测试每一组这样的数据,L和D
的关系对不对,也就是这组数位数对不对。。可能写得多了。真的愁死了,没做过winform啊给各位跪了,求代码啊

解决方案 »

  1.   

    1、先把相同的剔除。可以转为字符,去除相同部分,只剩 L D
    2、取到L计算D的位数
    3、验证D的位数
      

  2.   

    其实L和D的位置都知道了,L固定,后面抛去最后两位就是D,这样你取出来,按照你的规则去判断就是了
      

  3.   


    // using System.Linq;
    bool IsLengthCorrect(string s)
    {
    string[] arr = s.Split(' ');
    int L = int.Parse(arr[9], System.Globalization.NumberStyles.AllowHexSpecifier);
    string[] D = arr.Skip(10).Take(arr.Length - 10 - 2).ToArray();
    return L == D.Length;
    }// test
    string s = "68 a0 a1 a2 a3 a4 a5 68 01 04 31 32 33 34 12 16";
    bool b = IsLengthCorrect(s); // true
      

  4.   

    各位大神来个人解释一下吧,楼上那位您的代码有问题啊,报错Array并不包含skip啊
      

  5.   

    .net framework是多少?
    3.5以上的话using那里加上
    using System.Linq;
      

  6.   

    关于你这个问题,2楼和4楼,思路是对的,4楼代码编译报错,可能是因为,他用的.net框架,比你用的高,所以,他有的方法,你没有。
    我用个.net3.5框架,给你重写一遍吧。
            Boolean CheckLen(String sData)
            {
                if (String.IsNullOrEmpty(sData))
                {
                    return false;
                }            String[] sArr = sData.Split(' ');            //因为位数确定,即使 L="00",总长度也应该是12
                if (sArr.Length < 12)
                {
                    return false;
                }            int iL = Convert.ToInt32(sArr[9], 16);            return iL == (sArr.Length - 12);
            }