1832
Comentário:
|
3051
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 1: | Linha 1: |
São duas funções simples para conversão de números inteiros de qualquer base para qualquer base. | São 3 funções simples para conversão de números inteiros de qualquer base para qualquer base. |
Linha 3: | Linha 3: |
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). | 1- any2dec(num_original,base_original) - Esta função converte qualquer número da base 2 a 36 para qualquer base. Onde '''num_original''' é o número a ser convertido, e '''base_original''' é o valor de sua base (de 2 a 36 só considerando inteiros). |
Linha 5: | Linha 5: |
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.) | 2- dec2any(dec,base_final) = 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_final''' é a base para qual se deseja converter o número (base_final: de 2 a 36 só considerando inteiros.) |
Linha 7: | Linha 7: |
OBS: tanto '''any''' quanto '''dec''' podem ser passados a função como string, ou inteiros, porém '''base''' deve ser sempre um inteiro. | 3- any2any(num_original,base_original,base_final) = aglutina as duas funções acima para conversão direta de um número '''num_original''' de base '''base_original''' para uma determinada '''base_final'''. OBS: tanto '''num_original''' quanto '''dec''' podem ser passados a função como string, ou inteiros, porém '''base''' deve ser sempre um inteiro. |
Linha 11: | Linha 13: |
OBS3: As bases '''base_original''' e '''base_final''' são convertidas para inteiro Abaixo temos o código desta biblioteca que chamo de '''base_convert.py'''. |
|
Linha 16: | Linha 21: |
# -*- coding: cp1252 -*- # Conversão des: # # Por Alexandre Martins Klostermann # alexandre.klostermann@gmail.com # # any2dec: Converte o numero "any" na base "base" # para decimal, retornando "dec" # # dec2any: Converte um numero decimal "dec" para a # base "base" retornando o valor convertido # em "any" |
|
Linha 18: | Linha 36: |
def any2dec(any,base): any = str(any) |
def any2dec(num_original,base_original): num_original = str(num_original) base_original = int(base_original) |
Linha 23: | Linha 42: |
any_temp = list(any) any_temp.reverse() for i in any_temp: dec = dec + ( (dic.index(i)) * (base**(x))) |
dec_temp = list(num_original) dec_temp.reverse() for i in dec_temp: dec = dec + ( (dic.index(i)) * (base_original**(x))) |
Linha 31: | Linha 50: |
def dec2any(dec,base): | def dec2any(dec,base_final): base_final = int(base_final) |
Linha 34: | Linha 54: |
any_temp = [] any = '' |
numero_final_temp = [] numero_final = '' |
Linha 37: | Linha 57: |
temp_any = dec%base any_temp.append(temp_any) if ((int(dec/base)) == 0): |
temp_numero_final = dec%base_final numero_final_temp.append(temp_numero_final) if ((int(dec/base_final)) == 0): |
Linha 41: | Linha 61: |
dec = int(dec/base) any_temp.reverse() for i in any_temp: any = any + (dic[i]) return any |
dec = int(dec/base_final) numero_final_temp.reverse() for i in numero_final_temp: numero_final = numero_final + (dic[i]) return numero_final def any2any(num_original,base_original,base_final): num_dec = any2dec(num_original,base_original) num_final = dec2any(num_dec,base_final) return num_final |
São 3 funções simples para conversão de números inteiros de qualquer base para qualquer base.
1- any2dec(num_original,base_original) - Esta função converte qualquer número da base 2 a 36 para qualquer base. Onde num_original é o número a ser convertido, e base_original é o valor de sua base (de 2 a 36 só considerando inteiros).
2- dec2any(dec,base_final) = 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_final é a base para qual se deseja converter o número (base_final: de 2 a 36 só considerando inteiros.)
3- any2any(num_original,base_original,base_final) = aglutina as duas funções acima para conversão direta de um número num_original de base base_original para uma determinada base_final.
OBS: tanto num_original 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.
OBS3: As bases base_original e base_final são convertidas para inteiro
Abaixo temos o código desta biblioteca que chamo de base_convert.py.
Código
1 # -*- coding: cp1252 -*-
2 # Conversão des:
3 #
4 # Por Alexandre Martins Klostermann
5 # alexandre.klostermann@gmail.com
6 #
7 # any2dec: Converte o numero "any" na base "base"
8 # para decimal, retornando "dec"
9 #
10 # dec2any: Converte um numero decimal "dec" para a
11 # base "base" retornando o valor convertido
12 # em "any"
13
14 import string
15
16 def any2dec(num_original,base_original):
17 num_original = str(num_original)
18 base_original = int(base_original)
19 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']
20 x = 0
21 dec = 0
22 dec_temp = list(num_original)
23 dec_temp.reverse()
24 for i in dec_temp:
25 dec = dec + ( (dic.index(i)) * (base_original**(x)))
26 x = x+1
27 return str(dec)
28
29
30 def dec2any(dec,base_final):
31 base_final = int(base_final)
32 dec = int(dec)
33 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']
34 numero_final_temp = []
35 numero_final = ''
36 while True:
37 temp_numero_final = dec%base_final
38 numero_final_temp.append(temp_numero_final)
39 if ((int(dec/base_final)) == 0):
40 break
41 dec = int(dec/base_final)
42 numero_final_temp.reverse()
43 for i in numero_final_temp:
44 numero_final = numero_final + (dic[i])
45 return numero_final
46
47 def any2any(num_original,base_original,base_final):
48 num_dec = any2dec(num_original,base_original)
49 num_final = dec2any(num_dec,base_final)
50 return num_final