xxencode es una codificación de binario a texto similar a uuencode que utiliza únicamente caracteres alfanuméricos y los signos más y menos. Fue inventada como un medio para transferir archivos en un formato que pudiera sobrevivir a la traducción de conjuntos de caracteres, en particular entre ASCII y la codificación EBCDIC utilizada en los mainframes de IBM. [1]
Los datos codificados xx comienzan con una línea del formato:
comenzar <modo> <archivo>
Donde <modo> son los permisos de lectura/escritura/ejecución del archivo como tres dígitos octales, y <archivo> es el nombre que se utilizará al recrear los datos binarios.
xxencode toma repetidamente grupos de tres bytes y agrega ceros finales si quedan menos de tres bytes. Estos 24 bits se dividen en cuatro números de 6 bits, cada uno de los cuales se traduce luego al carácter n.º en la siguiente tabla:
1 2 3 4 5 6 0123456789012345678901234567890123456789012345678901234567890123 | | | | | | | +-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Cada grupo de sesenta caracteres de salida (que corresponden a 45 bytes de entrada) se genera como una línea separada precedida por un carácter codificado que indica el número de bytes codificados en esa línea. Para todas las líneas excepto la última, este será el carácter 'h' (el carácter que corresponde al valor 45). Si la entrada no es divisible por 45, la última línea contendrá los N caracteres de salida restantes, precedidos por el número de bytes de entrada restantes codificados como se indicó anteriormente. Finalmente, se genera una línea que contiene un solo espacio (o un carácter más), seguida de una línea que contiene la cadena "fin".
Los datos codificados en xx se distinguen generalmente de los codificados en Uu por el primer carácter de la línea ('h' para Xxencode, 'M' para Uuencode). Esto supone que hay al menos una línea completa (45 bytes codificados/60 caracteres) en la salida.
El siguiente es un ejemplo de codificación xx de un archivo de texto de una línea. En este ejemplo, %0D es la representación en bytes para el retorno de carro (CR) y %0A es la representación en bytes para el avance de línea (LF).
Nombre del archivo = wikipedia-url.txt Contenido del archivo = http://www.wikipedia.org%0D%0A
comienza 644 wikipedia-url.txt OO5FoQ1cj9rRrRmtrOKhdQ4JYOK2iPr7b1Ec+ fin