Page 1 of 1

CRC32 C++ Source Code

Posted: Wed Dec 16, 2009 7:19 am
by Neo
Global Variables:

Code: Select all

unsigned int crc32Table[256];
One time call function:

Code: Select all

void init_CRC32 (){

	int i, j;
	unsigned int dwPolynomial;
	unsigned int dwCrc;

	dwPolynomial = 0xEDB88320; // VIDEO4

	// Lookup table
	for (i = 0; i<256; i++){
		dwCrc = i;
		for (j = 8; j>0; j--){
			if (dwCrc & 1){
				dwCrc >>= 1;
				dwCrc ^= dwPolynomial;
			}
			else {
				dwCrc >>= 1;
			}
		}
		crc32Table[i] = dwCrc;
	}
}
CRC32 calculation:

Code: Select all

unsigned int getCRC32(unsigned char *buf, unsigned int length){

	unsigned int crc32Result = 0xFFFFFFFF;
	unsigned char iLookup;
	int i;

	for (i=0; i<length; i++){
		iLookup = (crc32Result & 0xFF) ^ buf[i];
		crc32Result >>= 8;
		crc32Result ^= crc32Table[iLookup];
	}

	return ~(crc32Result);
}