一、校验封装到一个类
public class CrcCheck
{
public static byte CRC8(byte[] buffer)
{
byte crc = 0;
for (int j = 1; j <= buffer.Length-3; j++)
{
crc ^= buffer[j];
for (int i = 0; i < 8; i++)
{
if ((crc & 0x01) != 0)
{
crc >>= 1;
crc ^= 0x8c;
}
else
{
crc >>= 1;
}
}
}
return crc;
}
/// <summary>
/// 字节0是低八位,字节1是高八位
/// </summary>
/// <param name="buffer"></param>
/// <returns></returns>
public static byte[] CRC16(byte[] data)
{
int crc = 0xffff;
for (int i = 0; i < data.Length-2; i++)
{
crc = crc ^ data[i];
for (int j = 0; j < 8; j++)
{
int temp = 0;
temp = crc & 1;
crc = crc >> 1;
crc = crc & 0x7fff;
if (temp == 1)
{
crc = crc ^ 0xa001;
}
crc = crc & 0xffff;
}
}
//CRC寄存器高低位互换
byte[] crc16 = new byte[2];
crc16[1] = (byte)((crc >> 8) & 0xff);
crc16[0] = (byte)(crc & 0xff);
return crc16;
}
}