题目描述
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
这里写代码片
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
char s[10]={0};
int len,i,a[10];
long long sum=0;//注意用long long
scanf("%s",s);
len=strlen(s);
for(i=0;i<len;i++){
if(s[i]>='A'&&s[i]<='F'){
a[i]=s[i]-'A'+10;
}else a[i]=s[i]-'0';//这是错的原因 应该是 -‘0’
// printf("%d ",a[i]);
}
for(i=0;i<len;i++){
sum+=(a[i])*(pow(16,len-i-1));
}
printf("%lld",sum);
return 0;
}