⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc.cpp

📁 可以用这个来对文件进行CRC校验
💻 CPP
字号:

#include "StdAfx.h"
#include "t.h"
#include "Crc.h"	

unsigned long CMathcrc::Reflect(unsigned long ref, char ch) 
{ 
	unsigned long value=0; 
	int i; 
	/* Swap bit 0 for bit 7 
	bit 1 for bit 6, etc.*/ 
	for(i = 1; i < (ch + 1); i++) 
	{ 
		if(ref & 1) 
			value |= 1 << (ch - i); 
		ref >>= 1; 
	} 
	return value; 	
} 

/*init crc32 table */ 
void CMathcrc::Init_crc32Table() 
{ 
	int i,j ; 
	unsigned long ulPolynomial = 0x04c11db7; 
	crc32_init_b=1; 
	for(i= 0; i <= 0xFF; i++) 
	{ 
		crc32_table[i]=Reflect(i, 8) << 24; 
		for (j = 0; j < 8; j++) 
			crc32_table[i] = (crc32_table[i] << 1) ^ (crc32_table[i] & (1 << 31) ? ulPolynomial : 0); 
		crc32_table[i] = Reflect(crc32_table[i], 32); 
	} 
} 

unsigned long CMathcrc::crc32(char* buffer,int len) 
{ 
	int i; 
	unsigned long ulCRC=0xffffffff;
	
	if(crc32_init_b!=1) 
		Init_crc32Table(); 
	for(i=0;i<len;i++) 
		ulCRC = crc32_table[(ulCRC ^ buffer[i]) & 0xFF]^(ulCRC >> 8); 
	
	return ulCRC ^ 0xffffffff ; 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -