Advertisement
clesiomatias

Conversor de bases numéricas

Aug 8th, 2021
1,606
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.83 KB | None | 0 0
  1. '''
  2. Programa de conversão de bases numéricas
  3. usando interface gráfica do módulo interno Tkinter
  4.  
  5. @version 1.0
  6. @author Clésio Matias
  7. @email clesiofmatias@gmail.com
  8. '''
  9. #ESCOPO DE FUNÇÕES
  10. #=-=-=-=-=-=-=-=-=-=-=
  11.  
  12. #converter base 10 para binário
  13. def dez_para_binario(x):
  14.     x = int(x)
  15.     z=1
  16.     l =[]
  17.     while True:
  18.         z*= 2
  19.         if z>=x:
  20.             break
  21.        
  22.     while True:
  23.         if x==0 and z==0.5:
  24.             break
  25.         l.append(int(x//z))
  26.         x=int(x%z)
  27.         z/=2
  28.     if l[0]==0:
  29.         del l[0]
  30.     return l
  31.        
  32.        
  33. #converter base 10 para hexa
  34. def dez_para_hexa(x):
  35.     x=int(x)
  36.     z=1
  37.     l =[]
  38.     while True:
  39.         z*= 16
  40.         if z>=x:
  41.             break
  42.        
  43.     while True:
  44.         if x//z == 10:
  45.             l.append('A')
  46.         elif x//z == 11:
  47.             l.append('B')
  48.         elif x//z == 12:
  49.             l.append('C')
  50.         elif x//z == 13:
  51.             l.append('D')
  52.         elif x//z == 14:
  53.             l.append('E')
  54.         elif x//z == 15:
  55.             l.append('F')
  56.         else:
  57.             l.append(int(x//z))
  58.         x=int(x%z)
  59.         z/=16
  60.         if x<=0 and z<=1:
  61.             break
  62.     if l[0]==0:
  63.         del l[0]
  64.     return l
  65.  
  66.        
  67. #converter base hexa para binário
  68. def hexa_para_binario(x):
  69.     n = str(x)
  70.    
  71.     l = []
  72.     l2 = []
  73.     l3=[]
  74.     pos=0
  75.    
  76.     while pos < len(n) :
  77.         l.append(n[pos])
  78.         pos+=1
  79.    
  80.     for i in l:
  81.         if i in'012345679':
  82.             i= int(i)
  83.         elif i in 'aA':
  84.             i =10
  85.         elif  i in 'bB':
  86.             i =11
  87.         elif i in 'cC':
  88.             i =12
  89.         elif i in 'dD':
  90.             i =13
  91.         elif i in 'eE':
  92.             i =14
  93.         elif i in 'fF':
  94.             i=15
  95.         c = dez_para_binario(i)
  96.        
  97.         while True:
  98.             if len(c)<4:
  99.                 c.insert(0,0)
  100.             else:
  101.                 break
  102.         l2.append(c)
  103.     for i in l2:
  104.         for j in i:
  105.             l3.append(j)
  106.     if l3[0]==0:
  107.         del l3[0]
  108.     return l3
  109.  
  110.  
  111. #converter binário para base 10
  112. def binario_para_dez(x):
  113.     l=[]
  114.     num=[]
  115.     d =0
  116.     for i in x:
  117.         if i  in '0' or  i in '1':
  118.             l.append(i)
  119.     l.reverse()
  120.     for i in l:
  121.         num.append(int(i))
  122.     for i in range (0,len(num)):
  123.         if num[i]!=0:
  124.             d+=(2**i)
  125.     return d
  126.  
  127.  
  128. # INICIO DO CORPO DO PROGRAMA
  129. #*{
  130.  
  131.     #importando pacote grafico Tkinter
  132. from tkinter import *
  133.  
  134. j1 = Tk()  #Criando a janela de menus
  135. j1.title('C.bases')
  136. f = Frame(j1)
  137. f.grid()
  138.  
  139.  
  140. #funções de controles de botão
  141. def bt_onclick1():
  142.     i=str(lEnt.get())
  143.     e=str(hexa_para_binario(i))
  144.     d= binario_para_dez(e)
  145.     lRes['text'] = str(d)
  146. def bt_onclick2():
  147.     i=str(lEnt.get())
  148.     e=str(hexa_para_binario(i))
  149.     lRes['text'] = str(e)
  150. def bt_onclick3():
  151.     i=str(lEnt.get())
  152.     e=str(binario_para_dez(i))
  153.     lRes['text'] = str(e)
  154. def bt_onclick4():
  155.     i=str(lEnt.get())
  156.     e=str(binario_para_dez(i))
  157.     d=str(dez_para_hexa(e))
  158.     lRes['text'] = str(d)
  159. def bt_onclick5():
  160.     i=str(lEnt.get())
  161.     e=str(dez_para_binario(i))
  162.     lRes['text'] = str(e)
  163. def bt_onclick6():
  164.     i=str(lEnt.get())
  165.     e=str(dez_para_hexa(i))
  166.     lRes['text'] = str(e)
  167.  
  168.    
  169. #criando botões de menu
  170. b1 = Button(f,text = 'Hexa para Decimal', command = bt_onclick1)
  171. b2 = Button(f,text = 'Hexa para Binário',command = bt_onclick2)
  172. b3 = Button(f,text = 'Binário para Decimal',command = bt_onclick3)
  173. b4 = Button(f,text = 'Binário para Hexa',command = bt_onclick4)
  174. b5 = Button(f,text = 'Decimal para Binário',command = bt_onclick5)
  175. b6 = Button(f,text = 'Decimal para Hexa',command = bt_onclick6)
  176. #conectando botões à janela de menus
  177. b1.grid()
  178. b2.grid()
  179. b3.grid()
  180. b4.grid()
  181. b5.grid()
  182. b6.grid()
  183.  
  184. #criando labels de entrada de dados e resultados
  185. lEnt = Entry(j1)
  186. lRes = Label(j1, text = '0')
  187. lEnt.grid()
  188. lRes.grid()
  189.  
  190. j1.mainloop() #loop da janela
  191.  
  192. # *}
  193. #fim do corpo do programa principal
  194.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement