当前位置: 代码迷 >> C# >> 求人帮忙C#写个CRC校验,该如何解决
  详细解决方案

求人帮忙C#写个CRC校验,该如何解决

热度:76   发布时间:2016-05-05 04:33:43.0
求人帮忙C#写个CRC校验


这是环保厅要求的CRC校验,之前试过好多种结果都不对,正确结果abc最后算出来是D701,求人帮忙给写一个,公司用的是C语言写的,现在要改C#项目,用DLL有一些问题
------解决思路----------------------


        public void GetCheck(int ByteLength, ref byte[] ombuffer, string CheckMode)
        {
            int i, j = 0;
            byte hi, lo, c1, c2;
            switch (CheckMode)
            {
                case "CRC16":
                    hi = 0xff;
                    lo = 0xff;
                    for (i = 0; i < ByteLength; i++)
                    {
                        lo = (byte)(lo ^ ombuffer[i]);
                        for (j = 0; j < 8; j++)
                        {
                            c1 = lo;
                            c2 = hi;
                            lo = (byte)(lo >> 1);
                            hi = (byte)(hi >> 1);
                            if ((c2 & 0x01) != 0)
                            {
                                lo = (byte)(lo 
------解决思路----------------------
 0x80);
                            }
                            if ((c1 & 0x01) != 0)
                            {
                                hi = (byte)(hi ^ 0xa0);
                                lo = (byte)(lo ^ 0x01);
                            }
                        }
                    }
                    ombuffer[ByteLength] = lo;
                    ombuffer[ByteLength + 1] = hi;
                    break;
                case "SUM":
                    lo = 0x00;
                    for (i = 0; i < ByteLength; i++)
                    {
                        lo += ombuffer[i];
                    }
                    ombuffer[ByteLength] = lo;
                    break;
            }
        }

这里是CRC16和SUM校验的算法
  相关解决方案