十六进制转十进制 2.0

#include<stdio.h>
#include<string.h>
int  change(char str1[100]);//对于change函数的声明 
int main(){ 
    int sum=0; //初始化十进制的数为0 
    char str1[100]; //定义字符串数组用来存储十六进制数 
    scanf("%s",str1);//输入十六进制的数 
    sum=change(str1);//调用change函数 
    printf("%d",sum);
} 

int change(char str1[100]){//定义change函数 将十六进制的数转换为十进制数 
    int i,k,m,n,sum; 
    m=strlen(str1); //使用strlen函数测量字符串长度 
      n=1;
    for(i=m-1;i>=0;i--){//从最高位开始设置循环 
        if(i<m-1)    n=n*16;//位权依次乘以16的倍数 
        if(str1[i]>='A')  sum=sum+(str1[i]-55)*n;//如果字符在A之后,减去55取其数字进行乘积 
        else sum=sum+(str1[i]-'0')*n;//否则减去零字符 取数字 注意数字字符不能直接使用,要经过ascii码的变换  
    }
    return sum; 
}
人生如逆旅,我亦是行人
原文地址:https://www.cnblogs.com/sz2003/p/14159117.html