[an error occurred while processing this directive]
|
#include /* Образующий полином для CRC #define CRC16 0xa001 FILE *f_ptr; void main(void) if((crc_tbl=(unsigned short *)malloc(512)) == NULL) index=crc_tbl; for(i=0;i<256;i++) j>>=1; index=crc_tbl; f_ptr=fopen("crc16tab.c","wt"); free(crc_tbl);
E-mail:
info@telesys.ru
/* X^16+X^15+X^2+X^0 */
{ unsigned short i,j,curr_crc;
unsigned char k;
unsigned short *crc_tbl,*index;
{ printf("Insufficient memory.\n"); exit(0); }
{ j=i;
curr_crc=0;
for(k=8;k>0;k--)
{ if( (j ^ curr_crc) & 0x0001 )
curr_crc=(curr_crc >> 1) ^ CRC16;
else curr_crc>>=1;
}
*index=curr_crc;
index++;
}
fprintf(f_ptr,"unsigned short crctab[] = {\n\t");
for(i=0;i<256;i++)
{ if(((i % 8) == 0) && (i > 0)) fprintf (f_ptr,"\n\t");
fprintf(f_ptr," 0x%04x",*index);
index++;
if(i != 255) fprintf(f_ptr,",");
else fprintf(f_ptr," };\n");
}
fclose(f_ptr);
exit(0);
}
Ответы