问题: 写一个函数,输入一个十六进制数,输出相应的十进制数
本次代码采用的方法是按权相加
例:十六进制 :96
对应十进制 : 9*16^1 + 6*16^0 = 150;
/*
十六进制中有以下对应关系
A(a) = 10;
B(b) = 11;
C(c) = 12;
D(d) = 13;
E(e) = 14;
F(f) = 15;
*/
# include <stdio.h>
# include <string.h>
int main(){
int Hextod(char []);
char a[80];
printf("Please enter HEX number : ");
scanf("%s",a);
printf("n = %d",Hextod(a)) ;
return 0;
}
int Hextod(char str[]){
int sum=0,p=1,n;
for(int i=strlen(str)-1;i>=0;i--){
// 将字符串按照ASCii码转换成数值
if(str[i]>='0' && str[i]<='9') n = str[i]-'0';
else if(str[i]>='a' && str[i]<='f') n = str[i]-'a'+10;
else if(str[i]>='A' && str[i]<='F') n = str[i]-'A'+10;
sum += n*p;
p *= 16;
}
return sum;
}
样例输入:A158
样例输出 :41304