//16进制转10进制

double CSFCApp::HexToInt(CString strSource)
{
//字符串16进制转10进制
double nTemp=0;

CString strTemp;
strTemp=strSource;
for(char cc='G',dd='g'; cc<='Z',dd<='z'; cc++,dd++) //判断输入的字符串是否合法
{
if(strTemp.Find(cc,0) !=-1 || strTemp.Find(dd,0) !=-1)
{
return -1;
}
}

for(int i = 0; i<(int)strlen(strSource); i++)
{
int nDecNum = 0;
switch(strSource[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 = strSource[i] - '0'; break;
default: return 0;
}

double iout = nDecNum * (double)::pow(16,strSource.GetLength()-i -1); //转10进制加到输出变量上
nTemp = nTemp + iout;
}

return nTemp;
}

posted @ 2019-08-16 17:17  石首桃花山  阅读(197)  评论(0编辑  收藏  举报