从32进制开始(又名。Triacontakaidecimal)到integer非常简单,例如:
>>>int("v", 32)
31
你怎么做相反的方式呢?如果没有办法的话,我正在考虑编一本字典。
编辑:
实际上我是通过字典得到这个的,我这个方法的思想是取一个基数为32的十六进制字符,如果LSB没有设置为1,则将其递增
>>> def incHex(hexChar):
... intRep = int(hexChar, 32)
... binRep = bin(intRep)
... if(binRep[-1:]!='1'):
... intRep += 1
... convDict = {0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,10:'A',11:'B',12:'C',
... 13:'D',14:'E',15:'F',16:'G',17:'H',18:'I',19:'J',20:'K',21:'L',
... 22:'M',23:'N',24:'O',25:'P',26:'Q',27:'R',28:'S',29:'T',30:'U',
... 31:'V'}
... return convDict[intRep]
...
>>> incHex('l')
'L'
>>> incHex('m')
'N'
>>>
字典对于你想做的事来说可能有点过分了。为什么不使用元组:
这将使查找速度更快,同时节省您的内存。
如果您只是查找0-31范围内的整数,则可以执行以下操作:
此外,您可能还想:
而不是
另一种方法来做convDict
我找到了numconv包,它似乎提供了这个?
相关问题 更多 >
编程相关推荐