描述:从键盘中输入一个十六进制的数值字符串,输出它的十进制数值。
例如:
输入:0xAA
输出:170
输入:0xBC
输出:188
解析:因为这个字符串前两个字符0x,对数字没有意义,因此只需将字符串中在0x后面的字符提出来运算就行。
十六进制转十进制中,0-9数字代表的数值就是0-9,A-Z字母代表的数值代表10-35。
个位的字符转换后乘以16的0次方,十位的字符转换后乘以16的1次方,百位的字符转换后乘以16的2次方,依次这样得出单独的结果。
然后把它们相加在一起等到的就是字符串的十进制数值。
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int i,s,sum;
char str[100];
gets(str);
s=strlen(str);
sum=0;
for(i=2;i<s;i++)
{
if(str[i]>=48 && str[i]<=57)
sum=sum+(str[i]-48)*pow(16,s-i-1);
else
sum=sum+(str[i]-55)*pow(16,s-i-1);
}
printf("%d\n",sum);
return 0;
}
该篇博客介绍了一段C语言代码,用于接收用户输入的十六进制数值字符串,并将其转换为对应的十进制数值。程序通过忽略'0x'前缀,逐位解析字符串中的十六进制数字(包括字母A-F),并利用16的幂次进行累加计算。最后输出转换后的十进制数值。
226

被折叠的 条评论
为什么被折叠?



