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
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