0

所以我有一个代码,但我不确定它是如何工作的:

    def getValue(number):
        return int(number,16)

因此,如果我输入 'a25' 作为数字,它应该返回 2597 但我的问题是这个 int 函数是如何工作的,还有其他方法可以做到这一点吗?

4

2 回答 2

4

假设数字是以 16 为基数,则此函数返回数字的int等价物。

见这个int 方法的定义

于 2013-09-10T03:46:08.063 回答
3

它的工作原理是这样的:

import string
allChars = string.digits+string.lowercase #get a list of all the 'characters' which represent digits
def toInt(srep,base):
    charMap = dict(zip(allChars,range(len(allChars)))) #map each 'character' to the base10 number
    num = 0 #the current total
    index = len(srep)-1 #the current exponent
    for digit in srep:
        num += charMap[digit]*base**index
        index -= 1
    return num 

用于解释“a16”的带有一些调试打印的过程将是:

>>> int('a16',16)  #builtin function
2582
>>> toInt('a16',16)
+=10*16^2 -> 2560
+=1*16^1 -> 2576
+=6*16^0 -> 2582
2582
于 2013-09-10T03:56:02.527 回答