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

 

結果可以為:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM