[进制转换]用python实现10进制转任意进制的方法

目录

问题引出:

原理:10进制数转任意进制数都是通过除以目标进制数取余得到的。

具体步骤:

结果展示:

代码实现:

①数值转换预处理

实现原理

②得到目标进制数

创建字典的原理


问题引出:

各种算术问题可能都需要进行进制转后再进行计算,人工计算的原理理解了,那么该如何通过计算机Python语言来实现10进制转任意进制数呢?以此达到实现批量文件中的数字进行进制转换。

原理:10进制数转任意进制数都是通过除以目标进制数取余得到的。

具体步骤:

将十进制整数除以B,得到商和余数,余数对应为B进制数低位的值;

继续让商再除以B,得到商和余数,。。。。。。

重复此操作,直到商为0.

结果展示:

代码实现:

①数值转换预处理

a,x=map(int,input("请输入待转化的十进制数 目标进制,用空格隔开\n").split())
#a为待转换的十进制数,x为需要转化后的 进制数
a1=a
all=[]#存储转化后的数
while a>0:
    all.append(str(a%x))
    #把取余得到的数添加到列表中
    a=int(a/x)
    #由于取余只能得到余数,不能在原来的数值上减少,所以需要手动减少
    if a==1:
        a=0
        all.append('1')

实现原理:

10进制数转X任意进制的数,都是通过除以X取余,然后将余数倒序取出得到。所以只需要根据此思想,每次除以X得到的余数后,存入列表当中。计算机与人工短除法的最大区别是,计算机取余后不能在原来的数值上减少,所以需要再写一个a/x来实现,减少。最后如果余数为1的时候,则直接另a为0,同时加入1到列表当中。

②得到目标进制数

#进行处理
change={'10':'A','11':'B','12':'C','13':'D','14':'E','15':'F'}
#创建字典,用于转换数值
for i in range(0,len(all)):
    for k,v in change.items():
        if all[i]==k:
            all[i]=v
#数值处理,将10以上的数转化为ABC的形式

all=all[::-1]
#将得到的数进行倒叙
c="".join(all)
#把列表中的数 按字符串输出
print("%d转化为%d进制为:%s" %(a1,x,c))

创建字典的原理

需要将10-15的数字转化为ABCDEF的字符。所以创建字典来遍历。

最后把列表中的元素通过all[::-1]倒序取出

然后通过"".join(all)函数把列表转化为字符串,输出x转化后的进制数。

 字典的键值对可以通过 dict.items()来遍历其中的键值

以上本人的个人经验,如果有错误请各位大佬批评指正!

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pandas_007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值