2024年1月13日发(作者:)

38394647484956575859666768697677787986878889969798991 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040,};

uint16_t Crc16Byte(uint16_t crc, const uint8_t c){ uint8_t lut = (crc ^ c) & 0xFF; return (crc >> 8) ^ CrcTable[lut];}

uint16_t Crc16(uint16_t crc, uint8_t const *buffer, uint16_t len){ while(len--){ crc = Crc16Byte(crc,*buffer++); } return crc;}

void check_crc();uint8_t data[] = {0,1,2,3,4,5,6};

int main(int argc, char *argv[]){ int i = 0; uint16_t crc = 0xFFFF;

crc = Crc16(crc, data, sizeof(data)/sizeof(uint8_t)); printf("crc = %d n",crc); //*(data+7) = crc%256; //*(data+8) = crc/256; memcpy(data+7,&crc,sizeof(uint16_t));

for(i=0; i

check_crc(data);

return 0;}

void check_crc(uint8_t *data){ uint8_t data_old[] = {0,1,2,3,4,5,6}; int j = 0,len = 0; uint16_t crc_parse; uint16_t crc_new = 0xFFFF; for(j=0; j<7; j++) printf("data_old[%d] = %d n",j,data_old[j]);

crc_new = Crc16(crc_new, data_old, sizeof(data_old)); printf("crc_new = %d n",crc_new);

len = 9; //sizeof(data) //crc_parse = (uint16_t)data[len-2] << 8 | data[len-1]; crc_parse = data[len-2] | (uint16_t)data[len-1] << 8; printf("nn %d %d %d nn",len,data[len-2],data[len-1]);

//crc_parse = data[len-2] + data[len-1] * 256;

printf("crc_parse = %d n",crc_parse);

if(crc_parse == crc_new) printf("crc check successn");}