在VC++中实现CRC32算法。

    技术2022-05-11  92

    // 动态生成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);}  

    最新回复(0)