目录

问题引出:

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

具体步骤:

结果展示:

代码实现:

①数值转换预处理

实现原理

②得到目标进制数

创建字典的原理


问题引出:

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

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

具体步骤:

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

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

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

结果展示:

python将10进制IP转为点分制 python 10进制转任意进制_程序人生

代码实现:

①数值转换预处理

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()来遍历其中的键值

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