1: /// <summary>
2: /// 计算CRC校验码(0:地位,1:高位)
3: /// </summary>
4: /// <param name="byteData">输入参数:CRC值</param>
5: /// <returns>返回值:byte[],2位,0:地位,1:高位</returns>
6: public static byte[] GetCRC(byte[] byteData)
7: {
8: byte[] CRC = new byte[2];
9: UInt16 wCrc = 0xFFFF;
10: for (int i = 0; i < byteData.Length; i++)
11: {
12: wCrc ^= Convert.ToUInt16(byteData[i]);
13: for (int j = 0; j < 8; j++)
14: {
15: if ((wCrc & 0x0001) == 1)
16: {
17: wCrc >>= 1;
18: wCrc ^= 0xA001;//异或多项式
19: }
20: else
21: {
22: wCrc >>= 1;
23: }
24: }
25: }
26: CRC[1] = (byte)((wCrc & 0xFF00) >> 8);//高位在后
27: CRC[0] = (byte)(wCrc & 0x00FF); //低位在前
28: return CRC;
29: }