CRC8 测试程序

#include
unsigned char Crc8Gen_smbus(unsigned char *charP,unsigned char len) //该算法来自网络
{
    int i,j;
    unsigned char crc8;
    crc8 = 0;
    for(i=0;i     {
     crc8 = crc8^*charP++;
           for(j=0;j<8;j++)
        {
            if(crc8&0x80)
                crc8 = (crc8<<1)^0x07;
                //本来应该是crc8 ^ 0x101
                //但是最高位都是1 异或必然得0 所以都吧开头的1去掉了
            else
                crc8 <<= 1;
        }
    }
    return crc8 & 0xff;


}     
int main()
{
unsigned char tempbuffer[15]={0x3A,0x00,0x18,0x5A,0x54,0x5A,0x46,0x31,0x30,0x30,0x30,0xFE,0xBA,0x1B };
int i=0;
tempbuffer[14]=Crc8Gen_smbus(tempbuffer,14);
for(i=0;i<15;i++)
{
printf("%x ",tempbuffer[i]);
}
printf("\n");
return 0;
}

你可能感兴趣的:(CRC8 测试程序)