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()

 

结果可以为:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值