我的思路:首先将十六进制数的每一位转化为十进制,然后乘以十六的相应次方.
我写的代码:
#include<stdio.h>
#include<string.h>
#define N 8
//将十六进制数的每一位转换为十进制数
int sixteenTrans(char str){
if(str >= '0'&&str <= '9'){
return str - 48;
}else{
return str - 55;
}
}
//十六进制转十进制
void sixteen2ten(int num[],int length)
{
int i,j,sum=0;
int n = 0;
for(i = 0;i < length; i++){
for(j = length - i - 1; j > 0;j--)
{
num[i] = num[i]*16;
}
sum += num[i];
}
printf("%d",sum);
}
int num[100];
int main(){
char str[N];
int i;
scanf("%s",str);
int length = strlen(str); //记录输入字符串的长度
//将sixteenTrans转化出的十进制数存入数组
for(i = 0;i < length; i++){
num[i] = sixteenTrans(str[i]);
}
sixteen2ten(num,l