source: orange/source/include/crc32.cpp @ 3289:31d7a06614d0

Revision 3289:31d7a06614d0, 544 bytes checked in by janezd <janez.demsar@…>, 7 years ago (diff)
  • fixed the license problems (missing notices etc).
Line 
1unsigned long crc_table[256];
2
3long reflect(unsigned long ref, char ch) 
4{ unsigned long value(0); 
5
6  for(int i = 1; i < (ch + 1); i++) {
7    if(ref & 1) 
8      value |= 1 << (ch - i); 
9    ref >>= 1; 
10  } 
11  return value; 
12} 
13
14
15bool initCRC32() 
16{ 
17  for(int i = 0; i <= 0xFF; i++) {
18    crc_table[i] = reflect(i, 8) << 24; 
19    for (int j = 0; j < 8; j++) 
20      crc_table[i] = (crc_table[i] << 1) ^ (crc_table[i] & (1 << 31) ? 0x04c11db7 : 0); 
21    crc_table[i] = reflect(crc_table[i], 32); 
22  }
23
24  return true;
25} 
26
27bool __f = initCRC32();
Note: See TracBrowser for help on using the repository browser.