2017-10-12 144 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") 
相关问题