En Python y muchos otros lenguajes de programación, existe una función que nos permite convertir una cadena de texto a ASCII.

Dicha función es ord(), la cual retorna un integer (número) que representa el valor de un carácter Unicode. Por ejemplo ord(‘A’) devuelve 65, ya que su equivalente en ASCII es dicho número. La inversa a esta función es chr()

Poniéndolo en práctica podríamos hacer un sencillo conversor de texto a ASCII. Para ello haré dos funciones/ejemplos usando bucles distintos, pero llegando a un mismo fin.

Usando el bucle while. Aunque el código es un poco más largo.

def Text2ASCII(Cadena):
    i = 0 					           # Variable del bucle.
    Size = len(Cadena)		     # Longitud de la cadena.
    Temp = ''					        # Variable temporal, donde se construirá la cadena en ASCII.
    while i < Size:  				      # Instancia del bucle.
        Temp += str(ord(Cadena[i])) + ','  # Se empieza a contruir la palabra, usando la función ord().
        i += 1 					      # Aumentamos el valor de la variable del bucle.
    return Temp					        # Retornamos la palabra ya convertida.

Usando el bucle for. A mi parecer es más efectivo, y con pocas líneas de código.

def Text2ASCII(Cadena):
    Tmp = ''				        # Variable temporal, donde se construirá la cadena en ASCII.
    for i in Cadena:			       # Instancia del Bucle.
	Tmp += str(ord(i)) + ','    # Se empieza a contruir la palabra, usando la función ord().
    return Tmp				      # Retornamos la palabra ya convertida.

Si ejecutamos un script utilizando alguna de las dos funciones podríamos obtener como resultado de la cadena Hola lo siguiente: 72,111,108,97.

Funciona perfectamente bien, Pero ¿si deseamos convertir la cadena obtenida en ASCII a texto de nuevo?…Creo que tengo la solución, y si leyeron bien al principio del artículo se podrán dar cuenta…¿Recuerdan que dije cuál función es la inversa a ord()?. Sí, exacto!, chr(). Pues no siendo más, miremos como hacerlo. Al igual que en las funciones/ejemplos anteriores, usaré los dos bucles.

Con while.

def ASCII2Text(Cadena):
    i = 0				# Variable del bucle.
    Temp = ''				# Variable temporal, donde se construirá la cadena de texto.
    Cadena = Cadena.replace(","," ")	# Reemplazamos las ,.
    Cadena = Cadena.split()		# Partimos la cadena.
    Size = len(Cadena)			# Longitud de la cadena.
    while i < Size:			# Instancia del bucle.
	Temp += chr(int(Cadena[i]))	# Construimos la palabra usando la función chr().
	i += 1				# Aumentamos el valor de la variable del bucle.
    return Temp				# Retornamos la palabra.

Con for.

def ASCII2Text(Cadena):
    Tmp = ''					# Variable temporal, donde se construirá la cadena en ASCII.
    Cadena = Cadena.replace(","," ")		# Reemplazamos las ,
    for i in Cadena.split():			# Instancia del Bucle.
	Tmp += chr(int(i))			# Se empieza a contruir la palabra, usando la función chr(). 
    return Tmp					# Retornamos la palabra.

Un saludo!