十六进制转十进制

十六进制转十进制

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

下面是变量和源码:

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 ()

相关推荐
赵谨言几秒前
基于Python的天文图像处理系统
经验分享·毕业设计
明月看潮生2 小时前
青少年编程与数学 02-004 Go语言Web编程 20课题、单元测试
开发语言·青少年编程·单元测试·编程与数学·goweb
stm 学习ing2 小时前
HDLBits训练5
c语言·fpga开发·fpga·eda·hdlbits·pld·hdl语言
燕雀安知鸿鹄之志哉.2 小时前
攻防世界 web ics-06
网络·经验分享·安全·web安全·网络安全
就爱学编程3 小时前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
北国无红豆4 小时前
【CAN总线】STM32的CAN外设
c语言·stm32·嵌入式硬件
单片机学习之路4 小时前
【C语言】结构
c语言·开发语言·stm32·单片机·51单片机
graceyun5 小时前
C语言初阶习题【9】数9的个数
c语言·开发语言
Schwertlilien7 小时前
图像处理-Ch5-图像复原与重建
c语言·开发语言·机器学习