CRC16有很多种

CRC-16/MODBUS

//数据(16进制):01 03 61 00 00 02 CRC校验:F7 DB
string str = "01 03 61 00 00 02";
str = str.Replace(" ", "");
int l = str.Length / 2;
uint crc = 0xFFFF;
for(int i=0;i<l;i++)
{
    crc = crc ^ Convert.ToUInt32(str.Substring(i * 2, 2), 16);
    for(int j=0;j<8;j++)
    {

        if ((crc & 0x01)>0)
        {
            crc = crc >> 1;
            crc = crc ^ 0xa001;
        }
        else
        {
            crc = crc >> 1;
        }
    }
}
Console.WriteLine(string.Format("{0:X4}", crc));

参考文献
https://blog.csdn.net/u013625451/article/details/81239572
参考了一个在线工具
http://www.ip33.com/crc.html

标签: none

添加新评论