美文网首页
可能是最优雅的任意进制转换(python实现)

可能是最优雅的任意进制转换(python实现)

作者: 爱宇宙的小松狮 | 来源:发表于2019-05-25 22:43 被阅读0次
    
    def trans_map(cint):
        if cint < 0:
            print "不合法"
            return
        elif cint < 10:
            return cint
    
        elif cint >= 10:
            return chr(cint - 10 + 65)
    
    
    # 将一个m进制的数转换为一个n进制的数
    def transfer(m, n, origin):
        num = anyToTen(m, origin)
        target = tenToAny(n, num)
        print target
    
    
    def anyToTen(m, origin):
        # 任意进制的数转换为10机制
        # 先将m转换为10进制
        # 公式 num = an * m**(n-1) + an-1 * m**(n-2).....+ a0 * m**0
        # 直接利用int的自带功能
        return int(str(origin), base=m)
    
    
    def tenToAny(n, origin):
        # 10进制转换为任意进制的数
        list = []
        while True:
            # 取商
            s = origin // n
            # 取余数
            tmp = origin % n
            list.append(trans_map(tmp))
            if s == 0:
                break
            origin = s
        list.reverse()
        list = [str(each) for each in list]
        print ''.join(list)
    
    
    if __name__ == '__main__':
        # print trans_map(11)
        print anyToTen(16,'28BC')
        tenToAny(16, 10428)
    
    

    相关文章

      网友评论

          本文标题:可能是最优雅的任意进制转换(python实现)

          本文链接:https://www.haomeiwen.com/subject/icdttctx.html