Python:整数到 Base 32 十六进制(又名。Triacontakaidecimal)

标签 python integer hex base32

好的,例如,从 Base 32 十六进制(又名 Triacontakaidecimal)到整数非常容易:

>>>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'
>>>

最佳答案

字典对于您想做的事情来说可能有点矫枉过正。为什么不只使用元组:

convTable = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V')

这将使查找速度更快,同时还能节省内存。

如果您只是查找 0-31 范围内的整数,那么您可以这样做:

getHex32Rep(val):
    return convTable[val]

此外,您可能还想这样做:

if(binRep[-1]!='1'):

代替

if(binRep[-1:]!='1'):

关于Python:整数到 Base 32 十六进制(又名。Triacontakaidecimal),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6692183/

相关文章:

python - 如何让python import在编译后起作用?

c - 将字符串输入到期望整数值的变量时无限循环

用于比较数组位置的Java函数?

python - 值错误 : non-hexadecimal number found in fromhex() arg at position

python - 使用python脚本将十六进制、八进制数转换为十进制形式

python - 我如何将字符串解析为 subprocess.Popen 的输入?

python - Selenium webdriver 链接提取

c++ - C/C++取值为0的整型变量求反

math - Lisp -- 如何在不进行基数转换的情况下将多个十六进制数相加?

python - 执行exe时没有模块名称 'pyqtgraph.graphicsItems.PlotItem.plotConfigTemplate_pyqt5'