TCHAR CalcMEIDCheckDigit(CString strMEIDHex)
{
if(strMEIDHex.GetLength()!=14 && strMEIDHex.GetLength()!=15) return 0;
int nTotal=0;
//先累加奇数位数字
for(int i=0;i<14;i+=2)
{
nTotal+=_tcstoul(strMEIDHex.Mid(i,1),NULL,16);
}
//偶数位乘以2,然后累加乘2以后的十六进制结果的两位数字
CString strTemp;
int nTemp;
for(int i=1;i<14;i+=2)
{
nTemp=2*_tcstoul(strMEIDHex.Mid(i,1),NULL,16);
strTemp.Format(TEXT("%02X"),nTemp);
nTotal+=_tcstoul(strTemp.Mid(0,1),NULL,16);
nTotal+=_tcstoul(strTemp.Mid(1,1),NULL,16);
}
nTotal%=16;//获取十六进制的末位数
nTotal=(nTotal==0) ? 0:(16-nTotal);
return (nTotal>=0 && nTotal<=9) ? (nTotal+'0'):(nTotal+'A'-10);
}
计算MEID校验位的算法函数
最新推荐文章于 2020-06-22 16:55:07 发布