2017-10-12 148 views
1

我正在寫一個轉換用戶輸入十六進制(基數爲16)數量爲10進制代碼,但我不能使用任何內置Python的功能,所以它看起來是這樣的:如何將字母轉換爲數字,同時將十六進制基數轉換爲十進制python 3?

def base16TO10(base16): 
    value = base16 
    hexadecimal = sum(int(c) * (16 ** i) for i, c in enumerate(value[::-1])) 
    print("Base 16 number:" , base16 , "is base 10 number:" , hexadecimal ,"\n") 

我需要使得如果字母A,B,C,D,E或F作爲基數16的一部分被輸入,則該函數將分別識別它們爲10,11,12,13,14和15 ,並將數字轉換爲基數10.謝謝!

+2

如果你正在使用'INT(C)',你能不能只用'INT (base16,16)'? – James

+0

如果你想這是超級手動的,你可以使用字典來將字符轉換爲整數。 – combinatorist

+0

[在Python中將十六進制字符串轉換爲int]的可能重複(https://stackoverflow.com/questions/209513/convert-hex-string-to-int-in-python) –

回答

0

這似乎很像回答家庭作業問題......但好的,在這裏。我的第一個解決方案是這樣的:

def base16TO10(base16): 
    conversion_list = 'ABCDEF' 
    hexadecimal = sum(conversion_list.index(c) * (16 ** i) for i, c in enumerate(base16[::-1])) 
    print("Base 16 number:" , base16 , "is base 10 number:" , hexadecimal ,"\n") 

但是,我們仍在使用一堆內置的Python函數。我們使用list.indexsumenumerate。所以,切割使用這些功能了,而忽略了詞典標運算符是dictionary. __getitem__隱式調用,我有:

def base16TO10(base16): 
    conversion_dict = {'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} 
    digit=0 
    hexadecimal=0 
    for c in base16[::-1]: 
     hexadecimal += conversion_dict[c] * (16 ** digit) 
     digit += 1 
    print("Base 16 number:" , base16 , "is base 10 number:" , hexadecimal ,"\n") 
相關問題