作者在 2009-01-05 17:48:22 发布以下内容
用的生成多项式为x16+x12+x5+1的校验算法
//功能:CRC的生成
//参数:DataLength 数据长度
// *EncodeData 数据流
// *CRC CRC位流
//无返回值
//参数:DataLength 数据长度
// *EncodeData 数据流
// *CRC CRC位流
//无返回值
void CRCEncode(int DataLength,int *EncodeData,int *CRC)
{
int i;
int CRC15Temp;
{
int i;
int CRC15Temp;
for(i = 0; i <= 15; i++) CRC[i] = 0;
for(i = 0; i <= DataLength - 1; i++){
CRC15Temp = CRC[15] ^ EncodeData[i];
CRC[15] = CRC[14];
CRC[14] = CRC[13];
CRC[13] = CRC[12];
CRC[12] = CRC[11] ^ CRC15Temp;
CRC[11] = CRC[10];
CRC[10] = CRC[9];
CRC[9] = CRC[8];
CRC[8] = CRC[7];
CRC[7] = CRC[6];
CRC[6] = CRC[5];
CRC[5] = CRC[4] ^ CRC15Temp;
CRC[4] = CRC[3];
CRC[3] = CRC[2];
CRC[2] = CRC[1];
CRC[1] = CRC[0];
CRC[0] = CRC15Temp;
}
}
CRC15Temp = CRC[15] ^ EncodeData[i];
CRC[15] = CRC[14];
CRC[14] = CRC[13];
CRC[13] = CRC[12];
CRC[12] = CRC[11] ^ CRC15Temp;
CRC[11] = CRC[10];
CRC[10] = CRC[9];
CRC[9] = CRC[8];
CRC[8] = CRC[7];
CRC[7] = CRC[6];
CRC[6] = CRC[5];
CRC[5] = CRC[4] ^ CRC15Temp;
CRC[4] = CRC[3];
CRC[3] = CRC[2];
CRC[2] = CRC[1];
CRC[1] = CRC[0];
CRC[0] = CRC15Temp;
}
}