关于c语言编程,16进制表示的字符串转成10进制的

求助万能的网友,如图所示方框内的转换步骤是什么意思啊,这三句无法理解。

这个就是一个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,再逐位转换为十进制。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-24
如:2aD转10进制
if(s[i]>='0'&&
n=n*16+s[i]-'0';//
n=0*16+'2'-'0'=2
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;//
n=2*16+'a'-'a'+10
=32+10=42
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10;//
n=42*16+'D'-'A'+10
=672+3+10
=685
说清楚了吗?追答

请参考

追问

同样谢谢这位网友,但是答案只能选一个……

第2个回答  2014-12-24
:
第3个回答  2014-12-24
😊
第4个回答  2014-12-24
这么难追答

不会吧

相似回答