Convertir texto a ASCII y viceversa

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!

  • http://tumadre Maria Gonzalez

    01001011 01100001 01101001 01111000 01101111 00100000 01101101 01100001 01110010 01111001 01110101 01110010 01111001 00101100 00100000 01100110 01101001 01101100 01101111 01101011 01101111 00100000 01100001 01111010 01110100 01100101 01110010 01101011 01100101 01110100 01100001 00100000 01100001 01110011 01110100 01100101 01100001 01110010 01110100 01100101 01110010 01100001 00100000 01110000 01100001 01110011 01100001 00100000 01100100 01100001 00100000 01100111 01100001 01110101 01110010 00100000 01101011 01101100 01100001 01110011 01100101 01100001 00100000 01100111 01100001 01101100 01100100 01110101 01101011 01101111 00100000 01100100 01110101 01100111 01110101 01101100 01100001 01110010 01101001 01101011 00100000 01100101 01110100 01100001 00100000 01101010 01100001 01101011 01101001 01101110 01100001 01110010 01100001 01111010 01101001 00100000 01101110 01100001 01101000 01101001 00100000 01101110 01101001 01111010 01110101 01101110 00101110 00100000 01000101 01110011 01101011 01110101 01100001 01101011 00100000 01101101 01101111 01111010 01110100 01110101 01101011 01101111 00100000 01100100 01101001 01111010 01101011 01101001 01111010 01110101 01110100

  • Erick Ramirez S

    para JAVA

       static public void ASCII2Text (String cadena){
     
            int size = cadena.length();
            for (int i =0;i&lt;size;i++){
                char caracter = cadena.charAt(i);
                int  ascci = (int)caracter;
                System.out.println(&quot;Linea &quot;+i+&quot;   CHAR: &#039;&quot;+caracter+&quot;&#039;   ASCCI: &quot;+ascci);
     
            }
     
        }
  • http://daw-labs.com WindHack

    Muchas gracias Erick!