En este post de programación en Python te mostraré un traductor de binario a texto y de texto a binario. Es decir, codificar de texto plano a binario, y de binario a texto plano.
Con esto podremos codificar y decodificar mensajes, ya sea proporcionando el texto plano para convertirlo a ceros y unos, o proporcionando la cadena de ceros y unos para transformarlo a texto plano.
Al terminar vamos a tener un traductor en Python capaz de traducir la cadena (por ejemplo) 01010000 01100001 01110010 01111010 01101001 01100010 01111001 01110100 01100101
en Parzibyte
.
Primero veamos cómo convertir de texto a binario en Python. Una vez que tengamos el texto, lo recorremos letra por letra. Ahora obtenemos el valor ASCII de la letra, por ejemplo, para la letra A
el valor es 65
.
Una vez que tenemos el código ASCII de la letra como entero decimal, lo convertimos a binario. Esta conversión puede ser usando funciones nativas o métodos manuales.
Cuando tengamos el número binario, lo concatenamos al resultado (junto con un espacio o un separador). Y hacemos eso por cada letra.
Para el caso de convertir de binario a texto primero debemos convertir el texto codificado a un arreglo para tener cada letra codificada por separado (ahí el uso del separador). Después convertimos el binario a decimal y luego convertimos el ASCII obtenido al carácter correspondiente.
Finalmente vamos agregando ese carácter (ya sea una letra o un espacio) a la cadena del resultado.
Esto puede parecer muy complejo pero verás que será realmente fácil, ya que vamos a separar todo en funciones para tener un código ordenado y limpio.
Comencemos viendo cómo codificar el texto. Primero tenemos la función que convierte un carácter a su representación binaria:
def ascii_a_binario(letra):
# Extraer su valor entero
valor = ord(letra)
# Convertirlo a binario
return "{0:08b}".format(valor)
Estamos formateando las cadenas para que el binario resultante tenga ceros a la izquierda. Y luego invocamos a esa función desde la que codifica el texto completo:
def texto_a_binario(texto):
texto_binario = "" # El resultado
contador = 0
for letra in texto:
texto_binario += ascii_a_binario(letra)
# Agregar un espacio entre binarios, excepto si es el último carácter
if contador + 1 < len(texto):
texto_binario += separador
contador += 1
return texto_binario
De este modo llegamos a la mitad de este tutorial. Ahora vamos a ver la segunda parte que es decodificar, o mejor dicho, convertir el binario a texto plano.
Ya expliqué anteriormente el algoritmo así que vamos directo al código fuente. Primero veamos cómo convertir un binario a su carácter correspondiente:
def binario_a_ascii(binario):
# Convertir binario a decimal
valor = int(binario, 2)
# Convertir el decimal a su representación ASCII
return chr(valor)
Después invocamos a esa función por cada binario que haya en la cadena codificada:
def binario_a_texto(texto_binario):
texto_plano = ""
for binario in texto_binario.split(separador):
texto_plano += binario_a_ascii(binario)
return texto_plan
Ahora te enseñaré cómo usar el traductor con un sencillo ejemplo:
"""
Modo de uso
"""
texto_original = "Parzibyte"
texto_codificado = texto_a_binario(texto_original)
print(f"El texto '{texto_original}' es '{texto_codificado}' en binario")
# Decodificar
original = binario_a_texto(texto_codificado)
print(f"El texto binario '{texto_codificado}' es '{original}'")
La salida la puedes ver en la imagen anterior. Obviamente este código puede venir de cualquier lugar… venir de un archivo, de lo que el usuario escriba, de una petición http, etcétera.
Hemos visto las dos partes de este traductor binario a texto; vimos cómo codificar y cómo decodificar. Es momento de mostrarte el código completo, mismo que queda así:
"""
____ _____ _ _ _
| _ \ | __ \ (_) | | |
| |_) |_ _ | |__) |_ _ _ __ _____| |__ _ _| |_ ___
| _ <| | | | | ___/ _` | '__|_ / | '_ \| | | | __/ _ \
| |_) | |_| | | | | (_| | | / /| | |_) | |_| | || __/
|____/ \__, | |_| \__,_|_| /___|_|_.__/ \__, |\__\___|
__/ | __/ |
|___/ |___/
____________________________________
/ Si necesitas ayuda, contáctame en \
\ https://parzibyte.me /
------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Creado por Parzibyte (https://parzibyte.me).
------------------------------------------------------------------------------------------------
| IMPORTANTE |
Si vas a borrar este encabezado, considera:
Seguirme: https://parzibyte.me/blog/sigueme/
Y compartir mi blog con tus amigos
También tengo canal de YouTube: https://www.youtube.com/channel/UCroP4BTWjfM0CkGB6AFUoBg?sub_confirmation=1
Twitter: https://twitter.com/parzibyte
Facebook: https://facebook.com/parzibyte.fanpage
Instagram: https://instagram.com/parzibyte
Hacer una donación vía PayPal: https://paypal.me/LuisCabreraBenito
------------------------------------------------------------------------------------------------
"""
separador = " " # Necesitamos un separador para cuando decodifiquemos esto
def ascii_a_binario(letra):
# Extraer su valor entero
valor = ord(letra)
# Convertirlo a binario
return "{0:08b}".format(valor)
def binario_a_ascii(binario):
# Convertir binario a decimal
valor = int(binario, 2)
# Convertir el decimal a su representación ASCII
return chr(valor)
def texto_a_binario(texto):
texto_binario = "" # El resultado
contador = 0
for letra in texto:
texto_binario += ascii_a_binario(letra)
# Agregar un espacio entre binarios, excepto si es el último carácter
if contador + 1 < len(texto):
texto_binario += separador
contador += 1
return texto_binario
def binario_a_texto(texto_binario):
texto_plano = ""
for binario in texto_binario.split(separador):
texto_plano += binario_a_ascii(binario)
return texto_plano
"""
Modo de uso
"""
texto_original = "Parzibyte"
texto_codificado = texto_a_binario(texto_original)
print(f"El texto '{texto_original}' es '{texto_codificado}' en binario")
# Decodificar
original = binario_a_texto(texto_codificado)
print(f"El texto binario '{texto_codificado}' es '{original}'")
Para terminar, te dejo con más tutoriales de Python.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.