crc32tab.c

来自「Error checking CRC and CRC TABLE GENERAT」· C语言 代码 · 共 69 行

C
69
字号
#include <stdio.h>
#include <string.h>

#define POLINOMIO 0x04C11DB7

/*
unsigned long crc32(unsigned char buf[])
{
	unsigned char topo;
	unsigned long crc=0, k, tam=strlen(buf);

	for(k=0;k<(tam+4);k++)
	{
		//printf("%X\n", crc);
		topo=(unsigned char)(crc>>24);
		if(k<tam) crc=(crc<<8)|buf[k];
		else crc=crc<<8;
		crc^=tab_crc16[topo];
	}

	return crc;
} */

int main()
{   /*
	unsigned int c;
	unsigned char k, buf[80];

	printf("DIGITE OS DADOS PARA O CALCULO DO CRC\n");
	scanf("%s", buf);

	printf("\n%X\n", crc32(buf));

	return 0;*/
	FILE *fp;
	unsigned int c;
	unsigned long crc=0;
	unsigned char k;

	if((fp=fopen("crc32.txt", "wr"))==NULL)
	{
		printf("ERRO AO ABRIR O ARQUIVO");
		return 1;
	}

	fprintf(fp, "unsigned long crc32[256] = {");
	for(c=0;c<256;c++)
	{
		crc=(unsigned long int)(c)<<24;

		for(k=0;k<8;k++)
		{
			if(crc&(1l<<31))
			{
				crc=crc<<1;
				crc^=POLINOMIO;
			}
			else crc=crc<<1;
		}
		printf("\n ",crc);
		if(!(c%8)) fprintf(fp, "\n");
		if(c!=255) fprintf(fp, "0x%.8lX, ", crc);
		else fprintf(fp, "0x%.8lX };", crc);
	}
	fclose(fp);

	return 0;
}

⌨️ 快捷键说明

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