十六进制转十进制

十六进制转十进制

在玩编程的时候常会碰到十六进制转换的问题。对于专业的大佬大咖这不是问题,小人物总会有些麻烦。我在研究调色板时也遇到进制转换问题。前些时在本站发了十进制转十六进制的博文,今再写十六进制转十进制的转换方法。供大家参考。


下面是变量和源码:
   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 ()

64e95847e9c5455bbe6645072fd9353c.png 

测试代码:
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 ()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值