前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现任意进制之间的转换

Python实现任意进制之间的转换

作者头像
py3study
发布2020-01-09 17:01:16
3.3K0
发布2020-01-09 17:01:16
举报
文章被收录于专栏:python3python3

  在日常生活中我们频繁使用到数学的进制,如季度逢三进一,星期逢七进一;×××、小时使用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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档