高分求救!!!!!! 请问各位大哥大姐,谁能告诉我用C语言编写CRC16的源程序!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这里有一个例子。http://www.laogu.com/yide/shownews.asp?id=436 (X^16 + X^12 + X^5 + 1) /* crc-16 */#include <stdio.h>#define bufsiz (16*1024)static WORD crc_table[256];void init_crc_table(void){ int i, j; WORD k; for (i = 0; i < 256; i++) { k = 0xC0C1; for (j = 1; j < 256; j <<= 1) { if (i & j) crc_table[i] ^= k; k = (k << 1) ^ 0x4003; } }}/* crc_calc() -- calculate cumulative crc-16 for buffer */WORD crc_calc(WORD crc, char *buf, unsigned nbytes){ unsigned char *p, *lim; p = (unsigned char *)buf; lim = p + nbytes; while (p < lim) { crc = (crc >> 8 ) ^ crc_table[(crc & 0xFF) ^ *p++]; } return crc;}void do_file(char *fn){ static char buf[bufsiz]; FILE *f; int k; WORD crc; f = fopen(fn, "rb"); if (f == NULL) { printf("%s: can't open file\n", fn); return; } crc = 0; while ((k = fread(buf, 1, bufsiz, f)) != 0) crc = crc_calc(crc, buf, k); fclose(f); printf("%-14s %04X\n", fn, crc);}#ifdef TESTint main(int argc, char **argv){ int i; if (argc < 2) { fprintf(stderr, "Usage: crc filename [filename...]\n"); return EXIT_FAILURE; } init_crc_table(); for (i = 1; i < argc; i++) do_file(argv[i]); return EXIT_SUCCESS;}#endif /* TEST */ vc++ mysql 乱码问题 这个sql如何设计 在用鼠标在工具箱中选择一个控件,在对话框上拖动出来这个控件之后………… 步行上下班快有一年了! 我在尝试使用dll,函数很简单,但是传递过去的参数的值是错误的 如何做一个add-in,在VC7的toolbar里加个按钮? 制作combo时,如何实现有提示的输入? 想要在MFC程序中使用一些WTL功能? 如何修改鼠标指针? CListBox 双缓冲自绘的问题 请问高手怎么样实现在IE里添加自己的ToolBar 怎么得到程序窗口外的鼠标事件?
http://www.laogu.com/yide/shownews.asp?id=436
{
int i, j;
WORD k; for (i = 0; i < 256; i++)
{
k = 0xC0C1;
for (j = 1; j < 256; j <<= 1)
{
if (i & j)
crc_table[i] ^= k;
k = (k << 1) ^ 0x4003;
}
}
}
/* crc_calc() -- calculate cumulative crc-16 for buffer */WORD crc_calc(WORD crc, char *buf, unsigned nbytes)
{
unsigned char *p, *lim; p = (unsigned char *)buf;
lim = p + nbytes;
while (p < lim)
{
crc = (crc >> 8 ) ^ crc_table[(crc & 0xFF) ^ *p++];
}
return crc;
}
void do_file(char *fn)
{
static char buf[bufsiz];
FILE *f;
int k;
WORD crc; f = fopen(fn, "rb");
if (f == NULL)
{
printf("%s: can't open file\n", fn);
return;
}
crc = 0;
while ((k = fread(buf, 1, bufsiz, f)) != 0)
crc = crc_calc(crc, buf, k);
fclose(f);
printf("%-14s %04X\n", fn, crc);
}#ifdef TESTint main(int argc, char **argv)
{
int i; if (argc < 2)
{
fprintf(stderr, "Usage: crc filename [filename...]\n");
return EXIT_FAILURE;
}
init_crc_table();
for (i = 1; i < argc; i++)
do_file(argv[i]);
return EXIT_SUCCESS;
}#endif /* TEST */