您的位置:首页 > 编程语言 > C语言/C++

C/C++: 十六进制转10进制源码

2009-05-17 21:55 232 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: