#include "stdio.h"
unsigned int CalcFieldCRC(unsigned int* pDataArray, unsigned int numberOfWords);
void main()
{
unsigned int pDataArray[4] = { 0x1001,0x2003,0x0101,0x0000};
unsigned int numberOfWords =sizeof(pDataArray)/sizeof(pDataArray[1]);
unsigned int CRC1 = CalcFieldCRC(pDataArray, numberOfWords);
printf("%d %x \n",numberOfWords,CRC1);
}
unsigned int CalcFieldCRC(unsigned int* pDataArray, unsigned int numberOfWords)
{
unsigned int shifter, c;
unsigned int carry;
unsigned int CRC = 0;
while(numberOfWords--)
{
shifter = 0x8000;
c = *pDataArray++;
do
{
carry = CRC & 0x8000;
CRC <<= 1;
if(c & shifter) CRC++;
if(carry) CRC ^= 0x1021;
shifter >>= 1;
} while(shifter);
}
return CRC;
}
评论1