谁有用C语言编写的CRC-16校验形式的代码~·高分求

来源:百度知道 编辑:UC知道 时间:2024/05/24 07:48:41
自己想了半天发现有点难,想求一个做为参考,希望能有注释,要C和C++的!!谢谢了,先放100分,如果好的话,还可以加分的~~

#define crc16_polynomial 0x8005 // crc_16校验方式的多项式.

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
typedef enum tagboolean { false, true } bool;

ulong g_ultable[256];

// crc_16方式校验的初始化函数, 计算crc_16余数表.
void _far crc16init(void)
{
uint nremainder;
int n, m;
ulong *pultable = g_ultable;

for(n = 0; n < 256; n ++)
{
nremainder = (uint)n << 8;
for(m = 8; m > 0; m --)
{
if(nremainder & 0x8000)
{
nremainder = (nremainder << 1) ^ crc16_polynomial;
}
else
{
nremainder = (nremainder << 1);
}
}
*(pultable + n) = nremainder;