1
/**//**************************************************************************
2
功能 : CRC校驗計算
3
輸入?yún)?shù) : unsigned char *ptr--需要校驗的數(shù)據(jù)
5
輸出參數(shù) : unsigned char len--校驗數(shù)據(jù)長度
7
返回值 :校驗值
8
**************************************************************************/
9
unsigned int CGlobalData::Cal_CRC(unsigned char *ptr, unsigned char len)
10

{
11
unsigned char i;
12
unsigned int crc=0;
13
while(len--!=0)
14
{
15
for(i=0x80; i!=0; i/=2)
16
{
17
if((crc&0x8000)!=0)
18
{
19
crc*=2;
20
crc^=0x18005;
21
}
22
else
23
{
24
crc*=2;
25
}
26
27
if((*ptr&i)!=0)
28
{
29
crc^=0x18005;
30
}
31
}
32
ptr++;
33
}
34
return(crc); //返回值后十六位為校驗值
35
}

/**//**************************************************************************2
功能 : CRC校驗計算 3
輸入?yún)?shù) : unsigned char *ptr--需要校驗的數(shù)據(jù) 5
輸出參數(shù) : unsigned char len--校驗數(shù)據(jù)長度7
返回值 :校驗值8
**************************************************************************/9
unsigned int CGlobalData::Cal_CRC(unsigned char *ptr, unsigned char len)10


{11
unsigned char i;12
unsigned int crc=0;13
while(len--!=0)14

{15
for(i=0x80; i!=0; i/=2) 16

{17
if((crc&0x8000)!=0)18

{19
crc*=2; 20
crc^=0x18005;21
}22
else23

{24
crc*=2;25
}26

27
if((*ptr&i)!=0) 28

{29
crc^=0x18005;30
}31
}32
ptr++;33
}34
return(crc); //返回值后十六位為校驗值35
}

