TCPL 2-3

题目:将字符串类型的十六进制数转化成整数类型的十进制数。

long htoi(char *pstr)
{
    int i = 0;
    int nNums = 0;
    int nIdx = 0;
    long lSum = 0;

    if(pstr[i] == '-')
    {
        nIdx = -1;
        i++;
    }

    while(1)
    {
        if(pstr[i] >= 'A' && pstr[i] <= 'F')
        {
            nNums = pstr[i] - 'A' + 10;
        }
        else if(pstr[i] >= 'a' && pstr[i] <= 'f')
        {
            nNums = pstr[i] - 'a' + 10;
        }
        else if(pstr[i] >= '0' && pstr[i] <= '9')
        {
            nNums = pstr[i] - '0';
        }
        else
        {
            break;  //如果不属于该进制中的数
        }
        lSum = 16 * lSum + nNums;
        i++;
    }

    if(nIdx == -1)
    {
        lSum = -lSum;
    }

    return lSum;
}

猜你喜欢

转载自blog.csdn.net/qq_38035641/article/details/86319921
2-3