python任意进制转换_Python实现任意进制之间的转换

在日常生活中我们频繁使用到数学的进制,如季度逢三进一,星期逢七进一;×××、小时使用12进制,每天使用24进制,每月使用30进制,分秒使用60进制,一年使用360进制等等;在编程过程中我们经常需要转换进制,虽然Python已经内置了常用进制转换函数,如int,bin,hex,oct;但是如果我们需要转换成其他进制怎么办呢?

我们知道,十进制转换成二进制时,使用“除2取余,逆序排列”即可。二进制转换成十进制时按权展开,即可得到十进制。类似地可以实现十进制转换成任意进制,任意进制也可以转换成十进制;通过十进制进行中转,即可实现任意进制数之间的转换了。

下面实现一个20进制内的任意转换(PS:需要转换成更多的进制,只需添加相应的字符即可)

#将十进制数转换成任意进制20进制以内,任意进制只需添加不同的符号即可

def decimalToAny(num,n):

baseStr = {10:"a",11:"b",12:"c",13:"d",14:"e",15:"f",16:"g",17:"h",18:"i",19:"j"}

new_num_str = ""

while num != 0:

remainder = num % n

if 20 > remainder > 9:

remainder_string = baseStr[remainder]

elif remainder >=20:

remainder_string = "("+str(remainder)+")"

else:

remainder_string = str(remainder)

new_num_str = remainder_string+new_num_str

num = num / n

return new_num_str

#将任意进制数转换成十进制

def anyToDecimal(num,n):

baseStr = {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,

"a":10,"b":11,"c":12,"d":13,"e":14,"f":15,"g":16,"h":17,"i":18,"j":19}

new_num = 0

nNum = len(num) - 1

for i in num:

new_num = new_num  + baseStr[i]*pow(n,nNum)

nNum = nNum -1

return new_num

目前只实现了简单的功能,后续慢慢完善;欢迎大家探讨!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值