Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # decimal para binario
- def dec2bin(num):
- toNum = power = 0
- while num > 0:
- # variavel acumulativa do calculo de 10 na potencia de POWER vezes o resto da divisão de NUM por 2
- toNum += 10 ** power * (num % 2)
- num = num // 2 #resto da divisão inteira divido por 2
- power += 1 #soma +1 na váriavel
- return toNum
- #binario para decimal
- def bin2dec(num):
- toNum = power = 0
- while num > 0:
- # variavel acumulativa do calculo de 10 na potencia de POWER vezes o resto da divisão de NUM por 10
- toNum += 2 ** power * (num % 10)
- num = num // 10#resto da divisão inteira divido por 10
- power += 1 #soma +1 na váriavel
- return toNum
- #decimal para hexadecimal
- def dec2hex(num):
- caracteres = [0,1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F"] #caracteres hexadecimal
- hexadecimal = []
- while num > 0:
- #insere no inicio da lista um caractere correspondente ao
- #calculo do resto da divisão de NUM pela base 16
- hexadecimal.insert(0, caracteres[(num % 16)])
- #o novo valor de NUM será o inteiro da divisão de NUM por 16
- num = num // 16
- return hexadecimal
- #hexadecimal para decimal
- def hex2dec(num):
- ret = 0
- for i,d in enumerate(num) :
- hexadecimal = "0123456789ABCDEF"
- value = hexadecimal.index(d) # de 0 a 15
- power = (len(num) -(i+1)) #power é igual ao tamanho da variavel - (indice de i + 1) = 16
- ret += (value * 16 ** power) #value multiplicado por 16 elevado a power
- return ret
- #binario para octal
- def bin2oct(num):
- toNum = power = 0
- num = bin2dec(num)
- while num > 0:
- # variavel acumulativa do calculo de 10 na potencia de POWER vezes o resto da divisão de NUM por 2
- toNum += 10 ** power * (num % 8)
- num = num // 8 #resto da divisão inteira divido por 2
- power += 1 #soma +1 na váriavel
- return toNum
- #octal para binario
- def oct2bin(num):
- noct = ['0', '1', '2', '3', '4', '5', '6', '7']
- bin= ['000', '001', '010', '011', '100', '101', '110']
- oct = list(n1)
- resultado = []
- t = ''
- for i in oct:
- resultado.append(bin[noct.index(i)]
- for c in resultado:
- t += c
- return t
- #binario para hexadecimal
- def bin2hex(num):
- #reutilização de funções já criadas
- num = dec2hex(bin2dec(num)) #utiliza a função de conversão de bin para decimal
- return num
- #hexadecimal para binario
- def hex2bin(num):
- num = dec2bin(hex2dec(num))
- return num
- opcao = -1
- while opcao != 9:
- print("1 - Converter um número decimal para binário");
- print("2 - Converter um número binário para decimal");
- print("3 - Converter um número decimal para hexadecimal");
- print("4 - Converter um número hexadecimal para decimal");
- print("5 - Converter um número binário para octal");
- print("6 - Converter um número octal para binário");
- print("7 - Converter um número binário para hexadecimal");
- print("8 - Converter um número hexadecimal para binário");
- print("9 - Encerrar o programa");
- opcao = int(input("Informe a opção escolhida: "))
- if(opcao >= 1 and opcao <= 8):
- if((opcao >= 1 and opcao <= 3) or (opcao >= 5 and opcao <= 7)):
- num = eval(input("Informe o número para a conversão: "))
- if(opcao == 1):
- print("Resultado:", dec2bin(num))
- elif(opcao == 2):
- print("Resultado:", bin2dec(num))
- elif(opcao == 3):
- #imprime todos valores separando sem espaços
- print("Resultado:", *dec2hex(num), sep="")
- elif(opcao == 5):
- print("Resultado:", bin2oct(num))
- elif(opcao == 6):
- print("Resultado:", oct2bin(num))
- elif(opcao == 7):
- print("Resultado:", *bin2hex(num), sep="")
- elif(opcao == 4 or opcao == 8):
- num = str(input("Informe o número para a conversão: "))
- if(opcao == 4):
- print("Resultado:", hex2dec(num))
- elif(opcao == 8):
- print("Resultado:", hex2bin(num))
- elif(opcao < 1 or opcao > 9):
- print("Informe uma opção válida.")
- else:
- print("Programa finalizado com sucesso.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement