目录
一.校验和(返回一个字节)
// 校验和,前n个字节数据之和模256
unsigned char Check(unsigned char *buf, int len)
{
int iSum = 0;
int iTemp = 0;
CString str;
for (int i = 0;i < len;i++)
{
iSum += buf[i];
}
iSum %= 0x100;
return (unsigned char)iSum;
}
二.异或校验(返回一个字节)
unsigned char CheckXor(char *strData,int len)
{
char checksum = 0;
for (int i = 0;i < len;i++)
{
checksum = checksum ^ strData[i];
}
return (unsigned char)checksum;
}
三.CRC校验(返回2个字节,高字节在前,低字节在后)
unsigned short int CRC(unsigned char *buf, int leng)
{
//CRC校验
unsigned short int Reg,temp,Crccode,i,j;
Reg = 0xFFFF;
Crccode = 0xA001;
for ( i=0;i<leng;i++ )
{
Reg ^= *(buf+i);
for ( j=0;j<8;j++ )
{
temp=Reg&0x0001;
Reg=Reg>>1;
if( temp==0x0001 )
Reg^=Crccode;
}
}
return (Reg<<8 | Reg>>8);
}
四.LRC校验(返回一个字节)
unsigned char LRC(unsigned char *auchMsg, unsigned short usDataLen)
{
unsigned char uchLRC=0;
while(usDataLen--)
{
uchLRC+=*auchMsg++;
}
return ((unsigned char)(-((char)uchLRC)));
}
五 补码求和(返回一个字节)
unsigned char Check(unsigned char *buf, int len)
{
int iSum = 0;
int iTemp = 0;
CString str;
for (int i = 0;i < len;i++)
{
iSum += buf[i];
}
iSum = 256 - iSum
return (unsigned char)iSum;
}