1 static unsigned crc_32_tab[256];
6 /* Not copyrighted 1990 Mark Adler */
8 unsigned long c; /* crc shift register */
9 unsigned long e; /* polynomial exclusive-or pattern */
10 int i; /* counter for all possible eight bit values */
11 int k; /* byte being shifted into crc apparatus */
13 /* terms of polynomial defining this crc (except x^32): */
14 static const int p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
16 /* Make exclusive-or pattern from polynomial */
18 for (i = 0; i < sizeof(p)/sizeof(int); i++)
19 e |= 1L << (31 - p[i]);
21 c = crc_32_tab[0] = 0;
23 printf("0x%08x, ", c);
25 for (i = 1; i < 256; i++)
28 for (k = i | 256; k != 1; k >>= 1)
30 c = c & 1 ? (c >> 1) ^ e : c >> 1;
35 printf("0x%08x, ", c);
36 if (i % 8 == 7) printf("\n");