十六进制转十进制
在玩编程的时候常会碰到十六进制转换的问题。对于专业的大佬大咖这不是问题,小人物总会有些麻烦。我在研究调色板时也遇到进制转换问题。前些时在本站发了十进制转十六进制的博文,今再写十六进制转十进制的转换方法。供大家参考。
下面是变量和源码:
string hex$, a$ ;
int dec, k ;
Int nlen ;
hex2dec (){
//传入十六进制数转换为十进制数
//传入 string hex$ 输出 int dec
// print "Input hex string = ", hex$ ;
nlen=len (hex$); //字串长度
dec=0 ; //init 置初值 0
//开始计算 >
for (i=0; i<nlen; i++){
a$=subString (hex$, i, 1);
//字符串转为数值的方法很多,我采用最简单直观的写法,字母大小写都可以。多人采用个位起反向计算十进制数,我的方法是高权位起降幂计算乘方累加。此方法就一个计算式,简单直观,方便使用。
if (a$=="0") k=0 ;
if (a$=="1") k=1 ;
if (a$=="2") k=2 ;
if (a$=="3") k=3 ;
if (a$=="4") k=4 ;
if (a$=="5") k=5 ;
if (a$=="6") k=6 ;
if (a$=="7") k=7 ;
if (a$=="8") k=8 ;
if (a$=="9") k=9 ;
if (a$=="A"||a$=="a") k=10 ;
if (a$=="B"||a$=="b") k=11 ;
if (a$=="C"||a$=="c") k=12 ;
if (a$=="D"||a$=="d") k=13 ;
if (a$=="E"||a$=="e") k=14 ;
if (a$=="F"||a$=="f") k=15 ;
kn=nlen-i-1 ; //高权位起降幂计算
dec=dec+(int)(k*pow(16,kn)) ; //乘方累加
} // return dec
}//hex2dec ()
测试代码:
test (){ //test hex to dec
hex$="8f" ;
print "Input:hex string = ", hex$;
hex2dec ();
print "计算结果:dec = ", dec ;
print " ";
hex$="df" ;
print "Input:hex string = ", hex$;
hex2dec ();
print "计算结果:dec = ", dec ;
print " ";
hex$="ffff" ;
print "Input:hex string = ", hex$;
hex2dec ();
print "计算结果:dec = ", dec ;
print " ";
hex$="ffFFff" ;
print "Input:hex string = ", hex$;
hex2dec ();
print "计算结果:dec = ", dec ;
print " ";
hex$="18dd" ;
print "Input:hex string = ", hex$;
hex2dec ();
print "计算结果:dec = ", dec ;
print " ";
}//test ()