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

本文介绍了如何使用数据结构中的栈来实现十进制与十六进制之间的转换。通过不断除16取余,将余数入栈,然后拼接成字符串得到十进制转十六进制的结果。相反,从右向左乘16的幂次相加,通过字符转数字完成十六进制转十进制。详细阐述了代码实现和运行结果。
摘要由CSDN通过智能技术生成

概述内容

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

十进制转化为十六进制

一个十进制数转换为十六进制(只考虑整数)我们以普遍的方法就是不断处于十六取余数,在从最后一个余数往上取,再去进行数字转换。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;不断循环就就可以得到所有余数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值