crcgen.c

来自「RS译码器的C源代码,采用了BM算法」· C语言 代码 · 共 50 行

C
50
字号
/***************************** *  * CRC-CCITT generator simulator for byte wide data. * * * CRC-CCITT = x^16 + x^12 + x^5 + 1 * * * Henry Minsky (1991) *  * CRC code lifted from "C Programmer's Guide To Serial Communication"  * by Joe Campbell * ******************************/  #include "ecc.h"BIT16 crchware(BIT16 data, BIT16 genpoly, BIT16 accum);/* Computes the CRC-CCITT checksum on array of byte data, length len*/BIT16 crc_ccitt(unsigned char *msg, int len){	int i;	BIT16 acc = 0;	for (i = 0; i < len; i++) {		acc = crchware((BIT16) msg[i], (BIT16) 0x1021, acc);	}		return(acc);}	/* models crc hardware (minor variation on polynomial division algorithm) */BIT16 crchware(BIT16 data, BIT16 genpoly, BIT16 accum){	static BIT16 i;	data <<= 8;	for (i = 8; i > 0; i--) {		if ((data ^ accum) & 0x8000)			accum = ((accum << 1) ^ genpoly) & 0xFFFF;		else			accum = (accum<<1) & 0xFFFF;		data = (data<<1) & 0xFFFF;	}	return (accum);}		

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?