// 动态生成CRC32的码表 unsigned long Crc32Table[ 256 ]; void GetCRC32Table() ... { int i,j; unsigned long Crc; for (i = 0; i < 256; i++) ...{ Crc = i; for (j = 0; j < 8; j++) ...{ if (Crc & 1) Crc = (Crc >> 1) ^ 0xEDB88320; else Crc >>= 1; } Crc32Table[i] = Crc; }} // 获取字符串CRC32校验值 void GetCrc32(LPTSTR InStr) ... { GetCRC32Table(); ULONG crc=0xffffffff; unsigned char* buffer; buffer = (unsigned char*)InStr; int len=strlen(InStr); for(int i=0; i<len; i++) ...{ crc = (crc >> 8) ^ Crc32Table[(crc & 0xFF) ^ *buffer++]; } char value[10]=...{0}; //转换成16进制字符串 itoa(crc^0xffffffff,value,16); //小写字符转换成大写字符 for(i=0;i<strlen(value);i++) ...{ value[i]=toupper(value[i]); } strcpy(InStr,value);} // 调用示例 void CVCGetDlg::OnOK() ... { UpdateData(TRUE); char value[10]=...{0}; char InData[100]=...{0}; strcpy(InData,m_InText); GetCrc32(InData); m_OutText=InData; UpdateData(FALSE);}