São duas funções simples para conversão de números inteiros de qualquer base para qualquer base.
1- any2dec(any,base) - Esta função converte qualquer número da base 2 a 36 para qualquer base. Onde any é o número a ser convertido, e base é o valor de sua base (de 2 a 36 só considerando inteiros).
2- dec2any(dec,base) = Esta função converte qualquer número decimal para qualquer base de 2 a 36. Onde dec é o número decimal a ser convertido, e base é a base para qual se deseja converter o número (de 2 a 36 só considerando inteiros.)
OBS: tanto any quanto dec podem ser passados a função como string, ou inteiros, porém base deve ser sempre um inteiro.
OBS2:: Ambas as funções retornam sempre strings.
Código
1 import string
2
3 def any2dec(any,base):
4 any = str(any)
5 dic = ['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', 'W', 'X', 'Y', 'Z']
6 x = 0
7 dec = 0
8 any_temp = list(any)
9 any_temp.reverse()
10 for i in any_temp:
11 dec = dec + ( (dic.index(i)) * (base**(x)))
12 x = x+1
13 return str(dec)
14
15
16 def dec2any(dec,base):
17 dec = int(dec)
18 dic = ['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', 'W', 'X', 'Y', 'Z']
19 any_temp = []
20 any = ''
21 while True:
22 temp_any = dec%base
23 any_temp.append(temp_any)
24 if ((int(dec/base)) == 0):
25 break
26 dec = int(dec/base)
27 any_temp.reverse()
28 for i in any_temp:
29 any = any + (dic[i])
30 return any