Curso de Python avanzado

Calculadora de números binarios, octales y hexadecimales

Capítulo 10: Convertir números binarios, octales y hexadecimales

En este capítulo verás Cómo crear una calculadora que transforme de binario o de octal o de hexadecimal a decimal y viceversa.
Esta calculadora, será capaz de convertir también en base 32 por ejemplo, entre otras como la base 27 o la ternaria.

Bitwise o bit a bit, en español, se trata de operaciones de bajo nivel que pueden alteran las cadenas binarias a nivel de bit. Estas operaciones son realmente básicas y compatibles con la CPU. Estas pocas operaciones son necesarias para trabajar con drivers, criptografía, comunicaciones de red, gráficos de bajo nivel, etc.
Veamos algunos ejemplos para que veas un poco cómo funciona.

Conversión de binario a decimal en Python

Escribamos el número 167 por poner algo en binario.

print(int('10100111', 2))

Nos devuelve el número en decimal:

167

Crear una calculadora conversora de números en Python

Sabiendo cómo funcionan los cálculos de este tipo en Python, podemos construir una pequeña función para poder utilizarlo por ejemplo en una aplicación calculadora.

def convierte():
	numero = input('Introduce un número:\n')
	sistema = int(input('Introduce un sistema de conversión:\n'))
	print(int(numero, sistema))

convierte()

Al llamar a esta función, nos devuelve el siguiente input:

Introduce un número:

Le introduces un número cualquiera.

101010111100001

Te pedirá que le introduzcas un sistema de conversión. Si es binario, un 2.

Introduce un sistema de conversión:
2

Finalmente, devuelve el resultado en decimal:

21985

Esta calculadora conversora funciona con otras conversiones, por ejemplo con números octales, hexadecimales, etc.

Transformemos un número hexadecimal en decimal.

Simplemente, ejecuta el converso e introduce un número hexadecimal y el sistema 16.

Introduce un número:
67F
Introduce un sistema de conversión:
16
1663

Hagamos la conversión a la inversa.

Convertir números decimales en binarios con Python

Convertir de decimal a binario es muy fácil, solo tenemos que utilizar bin().

def binario_decimal():
	numero = int(input('Introduce un número:\n'))
	convertido = bin(numero)
	print(convertido)

binario_decimal()

El número decimal 77 devuelve el número 0b1001101, al cual le tienes que quitar el prefijo 0b.

Introduce un número:
77
0b1001101

¿Cómo podemos eliminar el 0b que devuelve el método bin?
Lo primero es pararse a analizar las cosas. Investigamos el tipo de dato que devuelve bin() para saber cómo debemos tratarlo:

def binario_decimal():
	numero = int(input('Introduce un número:\n'))
	convertido = bin(numero)
	print(type(convertido))

binario_decimal()

Probamos con cualquier número y nos dice que es de tipo string.

Introduce un número:
50
class 'str'

Una vez sabemos que el método bin() devuelve un string, podemos decirle que se almacene en la variable convertido a partir del tercer carácter hasta el final con los dos puntos. Recuerda siempre que se empieza a contar desde la posición cero.

Las posiciones del string:

  • 0 = posición 0.
  • 1 = b.
  • 2 = Primer número binario.
def binario_decimal():
	numero = int(input('Introduce un número:\n'))
	convertido = bin(numero)[2:]
	print(convertido)

binario_decimal()

Ahora si, devuelve el binario sin el prefijo 0b y lo podrías transformar en integer para hacer cálculos con él.

Introduce un número:
60
111100

Convertir números decimales en octales con Python

También es posible crear un conversor de octal a decimal cambiando solo el bin() por el oct().

def octal_decimal():
	numero = int(input('Introduce un número:\n'))
	convertido = oct(numero)[2:]
	print(convertido)

octal_decimal()

Devuelve el número octal también sin el prefijo. En este caso 0o.

Introduce un número:
16
20

Convertir números decimales en octales con Python

Y para terminar el capítulo, veamos la conversion de decimal a hexadecimal.
Solo tienes que cambiar el oct() por hex().

def hexadecimal_decimal():
	numero = int(input('Introduce un número:\n'))
	convertido = hex(numero)[2:]
	print(convertido)

hexadecimal_decimal()

Devuelve el número hexadecimal también sin el prefijo. En este caso 0x.

Introduce un número:
700
2bc

Comentarios

Si te quedan dudas sobre el temario, sobre Python, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.