Bem... continuando com o assunto "conversões", vamos passar para as bases numéricas.
Se você está começando agora neste mundo de bases numéricas e ainda não pegou a "manha" da coisa, sugiro que leia estas dicas que lhe serão muito úteis no entendimento.
Pois bem. Vamos começar com o mais fácil: base decimal.
Atribuindo um valor decimal:
>>> inteiro = 65535
>>> inteiro
65535
>>> type(inteiro)
<class 'int'>
Transformando em hexadecimal (vimos no post anterior):
>>> hexadecimal = hex(inteiro)
>>> hexadecimal
'0xffff'
>>> type(hexadecimal)
<class 'str'>
Transformando em binário:
>>> binário = bin(inteiro)
>>> binário
'0b1111111111111111'
>>> type(binário)
<class 'str'>
Transformando em octal:
>>> octal=oct(inteiro)
>>> octal
'0o177777'
>>> type(octal)
<class 'str'>
_____________________________________________
Para os apressadinhos, vou adiantar que há uma maneira de transformar um número decimal em hexadecimal em que o resultado é em binário (bytes) e não uma string como o hex(inteiro), mas a explicação darei em outra oportunidade:
Primeiro, importamos a biblioteca struct, depois usamos-na para a conversão:
LITTLE ENDIAN (default):
>>>import struct
>>> struct.pack('<l',inteiro)
b'\xff\xff\x00\x00'
BIG ENDIAN:
>>> struct.pack('>l',inteiro)
b'\x00\x00\xff\xff'
Então temos:
>>> binhex=struct.pack('>l',inteiro)
>>> type(binhex)
<class 'bytes'>
>>> binhex
b'\x00\x00\xff\xff'
_____________________________________________
Vamos agora partir para o octal:
Transformando em inteiro:
>>> octal='0o177777'
>>> inteiro=int(octal,8)
>>> inteiro
65535
>>> type(inteiro)
<class 'int'>
Transformando em hexadecimal. Nesse caso, temos que dar uma "roubadinha":
>>> octal='0o177777'
>>> hexadecimal=int(octal,8)
>>> octal='0o177777'
>>> hexadecimal=hex(int(octal,8))
>>> hexadecimal
'0xffff'
>>> type(hexadecimal)
<class 'str'>
A mesma "roubadinha" para binário:
>>> octal='0o177777'
>>> binário=bin(int(octal,8))
>>> binário
'0b1111111111111111'
>>> type(binário)
<class 'str'>
E por último, vamos para o binário:
Transformando em inteiro:
>>> binário='0b1111111111111111'
>>> inteiro=int(binário,2)
>>> inteiro
65535
>>> type(inteiro)
<class 'int'>
Transformando em hexadecimal (roubandinha):
>>> hexadecimal=hex(int(binário,2))
>>> hexadecimal
'0xffff'
>>> type(hexadecimal)
<class 'str'>
Transformando em octal (roubadinha):
>>> octal=oct(int(binário,2))
>>> octal
'0o177777'
>>> type(octal)
<class 'str'>
io genti, tudo bom. Eu quero comvertir decimal em octal e nao consigo preciso ajuda
ResponderExcluir