16进制数转换为10进制数

题目:把一个16进制数转换为10进制数

1)转换后的数可以存贮在32位int里。

2)不考虑前缀0x,0X。

3)字符串允许包含的数字包括:0~9,a~f,A~F。

 

 1 #include <cstdio>
 2 #include <cctype>
 3 
 4 using namespace std;
 5 
 6 //把一个16进制的字符装换成10进制数
 7 int HxAlphaToDexNum(int c)
 8 {
 9     if(isdigit(c)) return c-'0';
10     if(islower(c)) return c-'a'+10;
11     if(isupper(c)) return c-'A'+10;
12     return -1//参数不是一个16进制数组成部分
13 }
14 
15 //把一个16进制数转换成10进制数
16 int HxToDex(char s[])
17 {
18     int rel = 0;
19     for(int i = 0; isalnum(s[i]); i++)
20     {
21         rel = 16*rel + HxAlphaToDexNum(s[i]);
22     }
23     return rel;
24 }
25 
26 int main()
27 {    
28     char s[30= {"12abEf"};
29     printf("%d", HxToDex(s));
30     return 0;
31 }
32 



 

posted on 2010-07-15 16:16  ewee  阅读(744)  评论(0编辑  收藏  举报

导航