associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "ConversordeBases"

Diferenças entre as versões de 5 e 6
Revisão 5e 2006-08-28 23:54:50
Tamanho: 4273
Comentário:
Revisão 6e 2006-08-29 16:16:39
Tamanho: 4270
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 74: Linha 74:
== Aplicado em Modo Gráfico == = Aplicado em Modo Gráfico =

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

Aplicado em Modo Gráfico

Usando o Eagle temos o mesmo programa em modo gráfico.

OBS: necessita pyGTK, pyCairo, Eagle e outros.

   1 # -*- coding: cp1252 -*-
   2 #Conversor de Bases Grafico.
   3 from eagle import *
   4 import base_convert
   5 
   6 def executar(app, wid):
   7     num_original= app["valor_inicial"]
   8     base_original= app["base_inicial"]
   9     base_final= app["base_final"]
  10     app["valor_final"] = base_convert.any2any(num_original,base_original,base_final)
  11 
  12     
  13 def limpar(app, wid):
  14     app["valor_inicial"] = ""
  15     app["valor_final"] = ""
  16 
  17 App(
  18     title="Conversor de Bases",
  19     window_size = (250,250),
  20     center=(
  21         Entry(id="valor_inicial", label="Numero Original:", editable=True, persistent=True),
  22         UIntSpin(id="base_inicial", label="Base Original:", value=2, min=2, max=36, step=1),
  23         UIntSpin(id="base_final", label="Base Desejada:", value=2, min=2, max=36, step=1),
  24         Entry(id="valor_final", label="Valor Final: ", editable=False, persistent=True),
  25         ),
  26     bottom=(
  27         Button(id="bCalcular", label="Calcular", callback=executar),
  28         Button(id="bLimpar", label="Limpar", callback=limpar),
  29         ),
  30 )
  31 
  32 run()

por AlexandreKlostermann