• Python实现:十进制数与(2~16进制数)之间的互相转换


    (最开始源于牛客网上的一道编程题 : [编程题] 数制转换

    将X进制转为int十进制的功能函数:(乘X次方各位数的加和法)
    # 将X进制转为int十进制的功能函数:(乘X次方各位数的加和法)
    def XToInt(strNum,X):
        sum = 0
        strNum = strNum.lstrip("0") #去掉开始的0(前导零)
        length = len(strNum)
        for i in range(length):
            sum += ABCToNum(strNum[i])*(X**(length-i-1))
        return sum
    将int十进制转为Y进制的功能函数:(除Y取余法)
    # 将int十进制转为Y进制的功能函数:(除Y取余法)
    def intToY(num,Y):
        res = ""
        while (num!=0):
            # temp=
            # temp=
            res = str(NumToABC(num%Y))+res
            num = num//Y #取商
        # res = int(res)
        res.upper()
        return res

    其中的辅助函数为:

    #  辅助功能函数
    def ABCToNum(char):
        if char in "0123456789":
            return int(char)
        if char in "Aa" :
            return 10
        if char in "Bb":
            return 11
        if char in "Cc" :
            return 12
        if char in "Dd":
            return 13
        if char in "Ee" :
            return 14
        if char in "Ff":
            return 15
    #  辅助功能函数
    def NumToABC(intN):
        if intN in [0,1,2,3,4,5,6,7,8,9]:
            return intN
        if intN ==10 :
            return 'A'
        if intN ==11 :
            return 'B'
        if intN ==12 :
            return 'C'
        if intN ==13 :
            return 'D'
        if intN ==14 :
            return 'E'
        if intN ==15 :
            return 'F'

     该题的完整实现代码:

    #  辅助功能函数
    def ABCToNum(char):
        if char in "0123456789":
            return int(char)
        if char in "Aa" :
            return 10
        if char in "Bb":
            return 11
        if char in "Cc" :
            return 12
        if char in "Dd":
            return 13
        if char in "Ee" :
            return 14
        if char in "Ff":
            return 15
    #  辅助功能函数
    def NumToABC(intN):
        if intN in [0,1,2,3,4,5,6,7,8,9]:
            return intN
        if intN ==10 :
            return 'A'
        if intN ==11 :
            return 'B'
        if intN ==12 :
            return 'C'
        if intN ==13 :
            return 'D'
        if intN ==14 :
            return 'E'
        if intN ==15 :
            return 'F'
    
    # 将X进制转为int十进制的功能函数:(乘X次方各位数的加和法)
    def XToInt(strNum,X):
        sum = 0
        strNum = strNum.lstrip("0") #去掉开始的0(前导零)
        length = len(strNum)
        for i in range(length):
            sum += ABCToNum(strNum[i])*(X**(length-i-1))
        return sum
    # 将int十进制转为Y进制的功能函数:(除Y取余法)
    def intToY(num,Y):
        res = ""
        while (num!=0):
            # temp=
            # temp=
            res = str(NumToABC(num%Y))+res
            num = num//Y #取商
        # res = int(res)
        res.upper()
        return res
    
    def NumberSystemConversion():
        X,strInput,Y = input().split()
        intA = XToInt(strInput,int(X))
        outB = intToY(intA,int(Y))
        print(outB)
    NumberSystemConversion()

    结果可以为:

  • 相关阅读:
    Flutter之CupertinoSwitch和Switch开关组件的简单使用
    docker的/var/run/docker.sock参数
    Elasticsearch _reindex Alias使用
    json_decode的结果是null
    1.1-1.4 hadoop调度框架和oozie概述
    1.8-1.10 大数据仓库的数据收集架构及监控日志目录日志数据,实时抽取之hdfs系统上
    1.6-1.7 定义agent 读取日志存入hdfs
    zabbix监控华为交换机
    1.1-1.5 flume架构概述及安装使用
    1.16 sqoop options-file参数进行运行任务
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/10066255.html
Copyright © 2020-2023  润新知