#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{ 下面有讲解!!!!!!!
char arr[100]={0};
scanf("%s",arr);
int m=0;
int sz=strlen(arr);
int i=0;
for(i=0;i<sz;i++)
{
if(arr[i]>='0'&&arr[i]<='9'){
m=m*16+arr[i]-'0';
}
else
{
m=m*16+arr[i]-'A'+10;
}
}
printf("%d",m);
return 0;
}
m=m*16+arr[i]-'0';
减'0'的目的就是将arr[i]中的字符转化成数字
假设字符串是123转换成10进制
循环第一圈:m=0*16+1;
第二圈:m=1*16+2;
第三圈:m=(1*16+2)*16+3,这不就相当于(1*16^2)+(2*16^1)+(3*16^0)
结果为:291
m=m*16+arr[i]-'A'+10;
这里为什么要加10因为A在16进制中表示10
比如:假设arr[i]='C';
arr[i]-'A'+10 = 'C'-'A'+10 = 12 12不就对应16进制中的C
十六进制字符串转换成十进制数
于 2022-08-26 23:27:16 首次发布