-
Notifications
You must be signed in to change notification settings - Fork 0
/
conversor.py
68 lines (46 loc) · 1.58 KB
/
conversor.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
""" Conversor de números
Decimais, Binários, Octais e Hexadecimais.
"""
import string
class Conversor:
def dec_para_base(self, numero: int, base: int) -> int:
""" Dado um número decimal converte-o em uma base definida. """
resultado = ""
while numero != 0:
resultado += str(numero % base)
numero //= base
return int(resultado[::-1])
def base_para_dec(self, numero: int, base: int) -> int:
""" Dado um número em uma base definida converte-o em decimal. """
exp = 0
resultado = 0
while numero != 0:
dec = (numero % 10) * (base ** exp)
resultado += dec
numero //= 10
exp += 1
return resultado
def dec_para_hex(self, numero: int) -> str:
""" Dado um número decimal converte-o em hexadecimal. """
resultado = ""
while numero != 0:
hex = numero % 16
if hex >= 10:
resultado += chr(hex + 55)
else:
resultado += str(hex)
numero //= 16
return resultado[::-1]
def hex_para_dec(self, numero: str) -> int:
""" Dado um número hexadecimal converte-o em decimal. """
exp = 0
resultado = 0
numero = numero.upper()[::-1]
for caractere in numero:
if caractere in string.ascii_letters:
dec = (ord(caractere) - 55) * (16 ** exp)
else:
dec = int(caractere) * (16 ** exp)
resultado += dec
exp += 1
return resultado