笔算方法:举例十六进制23c转十进制
先写出十六进制数每位上的基数,从最低位1开始,逐位向左写,每位是右边位乘以16,23c有两位,则就写三位,然后把23c逐位对齐写在下面:
256 16 1
2 3 c
这个式子上下做乘法,结果左右做加法=2*256+3*16+12*1=512+48+12=572
任意n进制计数方法一样,只是基数要每位是右边位乘以n
16进制到十进制
16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
所以,在第N(N从0开始)位上,如果是是数X(X大于等于0,并且X小于等于15,即:F)表示的大小为X*16的N次方。
例:2AF5换算成10进制:
用竖式计算:
第0位:5*16^0=5
第1位:F*16^1=240
第2位:A*16^2=2560
第3位:2*16^3=8192
-------------------------------------
10997
直接计算就是:
5*16^0+F*16^1+A*16^2+2*16^3=10997
1)读入十六进制字符串S,X=0,i=S首字符下标,L=S串长
2)取S[i],若S[i]是数字字符,则X=X*16+该字符表示的数字;若是'A'~'F'或'a'~'f',将其转换为10~15,否则报出错信息并自行中止。
3)i=i+1,若i>L,则输出X,算法结束;否则转步骤2)
第n位十六进制数字×16的n-1次方,再将所有结果相加即可