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 + -
显示快捷键?