看好了:
#include<stdio.h>
int a
char *str="1Af"
int main()
{
sscanf(str,"%x",&a)//%x为读入16进制数,大小写均可。sscanf是从c字符串中读入变量。
printf("%i",a)
return 0
}
这个就是一个16进制数转10进制的程序先以字符串方式逐字符读入16进制数
然后对每个读入的字符依次做判断
t=s[i]-'0'
//临时变量t为当前判断的字符串的ascii码值减去字符'0'的ascii码值,这一步的作用是将字符型转换为整型以供计算
if(t<=9)
k=k*16+s[i]-'0'
//如果t≤9,说明原字符为'0'~'9',转换后直接得到对应数字0~9,因此直接将这个数字转换为十进制即可:k=k*16+s[i]-'0'即将当前位转换为十进制
else
k=k*16+s[i]-'a'+10
//如果t>9,说明原字符为'a'~'f',转换后不能得到对应数字,必须通过s[i]-'a'+10把字符'a'~'f'转换为数字10~15,再逐位转换为十进制。