CRC32直接计算法计算字符串校验值示例(VC++)
2013-12-26 16:14
176 查看
int CCRC32TestDlg::getCRC32(CString data)
{
CString strData = data;
wchar_t* pData = strData.GetBuffer();
wchar_t c;
_int64 POLY = 0x04c11db7;
_int64 regi = 0x0;
//regi包含64位,使用中间的32位(即低第17位到48位)作为运算区域,低16位作为数据缓存区(Unicode字符,每个字符占用16位)
//POLY左移16位,与regi运算区域对齐
POLY <<= 16;
_int64 top_remove = 0x0001000000000000;//用于测试第49位是否为1
int i ;
c = *pData++;
regi |= c;//装载一个字符到缓存区
regi <<= 16;//从缓存区移到运算区低16位
c = *pData++;
if(c != '\0')//c == '\0'意味着整个字符串只有一个字符
{
regi |= c;//装载一个字符到缓存区
regi <<= 16;//运算区现在保存了2个字符
while(true)
{
c = *pData++;
if(c == '\0')
{
break;
}
else
{
regi |= c;//载入字符到缓存区
}
for(i = 0; i < 16; i++)
{
regi <<= 1;
if( (regi & top_remove) == top_remove)//测试刚移出运算区的是否为1
{
regi ^= POLY;
}
}
}
}
for(i=0;i<16;i++)
{
regi <<= 1;
if( (regi & top_remove) == top_remove)
{
regi ^= POLY;
}
}
//处理结果
i = regi>>16;
CString str;
str.Format(_T("%x"),i);//16进制显示
AfxMessageBox(str);
return i;
}
{
CString strData = data;
wchar_t* pData = strData.GetBuffer();
wchar_t c;
_int64 POLY = 0x04c11db7;
_int64 regi = 0x0;
//regi包含64位,使用中间的32位(即低第17位到48位)作为运算区域,低16位作为数据缓存区(Unicode字符,每个字符占用16位)
//POLY左移16位,与regi运算区域对齐
POLY <<= 16;
_int64 top_remove = 0x0001000000000000;//用于测试第49位是否为1
int i ;
c = *pData++;
regi |= c;//装载一个字符到缓存区
regi <<= 16;//从缓存区移到运算区低16位
c = *pData++;
if(c != '\0')//c == '\0'意味着整个字符串只有一个字符
{
regi |= c;//装载一个字符到缓存区
regi <<= 16;//运算区现在保存了2个字符
while(true)
{
c = *pData++;
if(c == '\0')
{
break;
}
else
{
regi |= c;//载入字符到缓存区
}
for(i = 0; i < 16; i++)
{
regi <<= 1;
if( (regi & top_remove) == top_remove)//测试刚移出运算区的是否为1
{
regi ^= POLY;
}
}
}
}
for(i=0;i<16;i++)
{
regi <<= 1;
if( (regi & top_remove) == top_remove)
{
regi ^= POLY;
}
}
//处理结果
i = regi>>16;
CString str;
str.Format(_T("%x"),i);//16进制显示
AfxMessageBox(str);
return i;
}
相关文章推荐
- js计算字符串长度、汉字校验、去除空格、数字校验、身份证校验的方法
- VC++任意格式时间字符串转换为CTime类型以及计算时差
- JS字符串统计操作示例【遍历,截取,输出,计算】
- java把字符串转化成公式计算的示例
- c#计算十六进制字符串的和校验
- 利用JS如何计算字符串所占字节数示例代码
- VC调试--输出调试字符串(含示例代码)
- VC++ 字符串String MD5计算小工具 VS2008工程
- vc++ 2013 中字符串处理示例
- python计算一段字符串字母的和(a,b分别为1,2)
- jq、js实现字符串转换日期计算时间差
- Java实现的校验银行卡功能示例
- php计算中英文混合或中文字符串的字数
- 另类思路:VC判断某字符串是否为纯数字?
- VC中分割字符串的AfxExtractSubString函数
- VC中数字与字符串转换方法
- 在C#中调用EVAL函数方法,通过字符串计算
- 正则表达式法计算字符串算术表达式2
- Java实现的计算稀疏矩阵余弦相似度示例
- 嵌入式 SDL把字符串转位图示例代码