hce-node application  1.4.3
HCE Hierarchical Cluster Engine node application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
CRC32.cpp
Go to the documentation of this file.
1 #include <CRC32.h>
2 bool CRC32::calculated = false;
3 u_int32_t CRC32::crc_table[256];
5 {
6  if(!calculated)
7  {
8  calculated = true;
9  calcCrcTable();
10  }
11 }
12 
13 
15 {
16 }
17 
18 
19 u_int32_t CRC32::calc(const char *data, unsigned int size)
20 {
21  u_int32_t crc = 0xFFFFFFFF;
22  for (unsigned int i = 0; i < size; i++)
23  {
24  crc = crc_table[(crc ^ (data[i])) & 0xFF] ^ (crc >> 8);
25  }
26  crc = ~crc;
27  return crc;
28 }
29 
30 
31 void CRC32::calcCrcTable()
32 {
33  const u_int32_t CRCPOLY = 0xEDB88320;
34  register u_int32_t t;
35  for (register unsigned int i = 0; i < 256; i++)
36  {
37  t = i;
38  for (register int j = 8; j > 0; j--)
39  {
40  if (t & 1)
41  t = (t >> 1) ^ CRCPOLY;
42  else
43  t >>= 1;
44  }
45  crc_table[i] = t;
46  }
47 }