123456789101112131415161718192021222324252627282930313233343536 |
- #include "stdafx.h"
- #include "CRC.h"
- #define POLY64REV 0x95AC9329AC4BC9B5ULL
- #define INITIALCRC 0xFFFFFFFFFFFFFFFFULL
- unsigned long long CRC64::CRCTable[256] = { 0 };
- CRC64::CRC64()
- {
- int i, j;
- unsigned long long part;
- for (i = 0; i < 256; i++)
- {
- part = i;
- for (j = 0; j < 8; j++)
- {
- if (part & 1)
- part = (part >> 1) ^ POLY64REV;
- else
- part >>= 1;
- }
- CRCTable[i] = part;
- }
- }
- UINT64 CRC64::GetCrc64(const char* pSrc, DWORD size)
- {
- unsigned long long crc = INITIALCRC;
- for (DWORD i = 0; i < size; i++)
- {
- crc = CRCTable[(crc ^ pSrc[i]) & 0xff] ^ (crc >> 8);
- }
- return crc;
- }
|