CRC16 验证算法


工作需要 从别人那里 要的


using System;
using System.Collections.Generic;
using System.Text;

namespace THSerialPortTool
{
    public class CRC16
    {
        public static byte[] cal(byte[] buff, int index, int len)
        {
            byte h = 0xff;
            byte l = 0xff;
            for (uint i = (uint)index; i < (index + len); i++)
            {
                h = (byte)(buff[i] ^ h);
                for (uint j = 0; j < 8; j++)
                {
                    byte c = (byte)(l & 0x80);
                    l = (byte)(l << 1);
                    byte d = (byte)(h & 0x80);
                    h = (byte)(h << 1);
                    if (c != 0)
                    {
                        h = (byte)(h | 1);
                    }
                    if (d != 0)
                    {
                        h = (byte)(h ^ 0x10);
                        l = (byte)(l ^ 0x21);
                    }
                }
            }
            return new byte[] { h, l };
        }

        public static bool check(byte[] buff, int index, int len)
        {
            byte h = 0x55;
            byte l = 170;
            for (uint i = (uint)index; i < (index + len); i++)
            {
                h = (byte)(buff[i] ^ h);
                for (uint j = 0; j < 8; j++)
                {
                    byte c = (byte)(l & 0x80);
                    l = (byte)(l << 1);
                    byte d = (byte)(h & 0x80);
                    h = (byte)(h << 1);
                    if (c != 0)
                    {
                        h = (byte)(h | 1);
                    }
                    if (d != 0)
                    {
                        h = (byte)(h ^ 0x10);
                        l = (byte)(l ^ 0x21);
                    }
                }
            }
            return ((h == 0) && (l == 0));
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值