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

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

2010-04-22 12:02 1196 查看

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

view plain
copy to clipboard
print
?

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;

}

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