数据结构与算法(十进制与十六进制互转)

概述内容

我们在平常都知道进制转换,可是我们使用数据结构里面的栈怎样去是实现呢?我们今天学习的就是十进制与十六进制相互转换底层用栈来实现。

十进制转化为十六进制

一个十进制数转换为十六进制(只考虑整数)我们以普遍的方法就是不断处于十六取余数,在从最后一个余数往上取,再去进行数字转换。1~9是正常的取而对与10~15我们则是取的是对应A~F;

我们的思路就是用栈来实现,我们可以对于目标十进制整数不断除16取余,得到的余数不断入栈,然后在进行挨个弹栈拼接成字符串格式 则最终我们就得到结果啦!大致思路是这样的,我们接下来对其进行代码实现。


首先,我们先去定义一个整数,使用到一个辅助栈(字符串类型 因为最终是要弹栈拼接成类似字符串),我们使用while循环 判断的条件就是如果目标整数不断除16最终除尽则停止循环。循环里面首先定义一个整数a定义为余数 是目标整数除16得到的余数。然后再去进行判断。这里是很重要的。如果a是小于10的则可以直接进栈。否则对于10~15的余数(包括10)我们要进行转换成A~F;乃我们是如何转化呢我们都应该知道A对应的ASCII码是65,后面依次类推。10(十进制余数)-A-(ASCII码为65),11(十进制余数)-B-(ASCII码为66),12(十进制余数)-C-(ASCII码为67).....;我们就可以看出规律,大于10的十进制余数与其对于的十六进制的字符相对应的ASCII相差55.即我们用a加上55得到整数强转为字符,即可得到对应的A~F。因为我们的栈是字符串类型的 ,所以我们还得把字符转化为字符串,这里我们用到+" "就可以得到字符串类型的A~F;有很多方法都可实现转换。最终在进栈。然后让目标函数再去整数16;不断循环就就可以得到所有余数。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值