/*/
// 把16进制字符串转换为10进制数
// Input: 16进制字符串
// Ouput: None
// Return: 10进制数
//*/
int CXXXXX::strHexToInt(CString sSource)
{
int i = 0;
int nTemp = 0;
for(char cc='G',dd='g'; cc<='Z',dd<='z'; cc++,dd++) //判断输入的字符串是否合法
{
if(sSource.Find(cc,0) !=-1 || sSource.Find(dd,0) !=-1)
{
::MessageBox(NULL,"请输入正确的16进制字符串!","输入错误",MB_ICONEXCLAMATION);
return -1;
}
}
for(i = 0; i<(int)::strlen(sSource); i++)
{
int nDecNum;
switch(sSource[i])
{
case 'a':
case 'A': nDecNum = 10; break;
case 'b':
case 'B': nDecNum = 11; break;
case 'c':
case 'C': nDecNum = 12; break;
case 'd':
case 'D': nDecNum = 13; break;
case 'e':
case 'E': nDecNum = 14; break;
case 'f':
case 'F': nDecNum = 15; break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': nDecNum = sSource[i] - '0'; break;
default: return 0;
}
nTemp += nDecNum * (int)::pow(16,::strlen(sSource)-i -1);
}
return nTemp;
}