{
unsigned int crc = 0; unsigned char crc_H8; unsigned char *ptr = test; while( len-- ) {
crc_H8 = (unsigned char)(crc >> 8); crc = crc << 8; crc = crc ^ crc_table[
crc_H8 ^ *ptr]; ptr++; }
printf("0x%x ",crc); }
4、按半字节计算CRC
是不是感觉上面的表太大了,不是很爽,我们再来改进一下,按半字节计算,原理我就不赘述了,程序如下: 复制代码 代码如下: unsigned
unsigned char len = 16; unsigned int crc_table[16] =
{0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef };
void main(void) {
unsigned int crc = 0; unsigned char crc_H4; unsigned char *ptr = test; while( len-- ) {
crc_H4 = (unsigned char)(crc >> 12); crc = crc << 4;
crc = crc ^ crc_table[ crc_H4 ^ (*ptr >> 4)]; crc_H4 = (unsigned char)(crc >> 12); crc = crc << 4;
crc = crc ^ crc_table[ crc_H4 ^ (*ptr & 0x0f)]; ptr++; }
char
test[16]
={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};
printf("0x%x ",crc); }
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库CRC校验方法用C语言实现源代码(2)在线全文阅读。
相关推荐: