艾米香儿是传销窝点:C/C++: 十六进制转10进制源码

来源:百度文库 编辑:中财网 时间:2024/07/06 16:11:29
int hex_char_value(char c)
{
    if(c >= '0' && c <= '9')
        return c - '0';
    else if(c >= 'a' && c <= 'f')
        return (c - 'a' + 10);
    else if(c >= 'A' && c <= 'F')
        return (c - 'A' + 10);
    assert(0);
    return 0;
}
int hex_to_decimal(const char* szHex, int len)
{
    int result = 0;
    for(int i = 0; i < len; i++)
    {
        result += (int)pow((float)16, (int)len-i-1) * hex_char_value(szHex[i]);
    }
    return result;
}


写完以上代码后,又突然想到可以用 sscanf() 实现同样的功能: 

int x;

sscanf("abc", "%x", x);

//x = 2748