Codificador y decodificador Base91

Convierte texto, bytes en hexadecimal o archivos a basE91 y viceversa. basE91 empaqueta los datos binarios en 91 caracteres ASCII imprimibles y produce una salida más corta que Base64 o Base85.

Se ejecuta por completo en tu navegador. No se sube nada.

Cómo se usa

  1. Elige Codificar para convertir texto o bytes en basE91, o Decodificar para convertir basE91 de nuevo en datos.
  2. Escribe o pega la entrada, o abre un archivo. Cambia el Formato de entrada a Hexadecimal si tienes bytes sin procesar.
  3. El resultado se actualiza mientras escribes. Al decodificar, elige Texto o Hexadecimal como Formato de salida.
  4. Copia el resultado o descárgalo como archivo.

¿Qué es basE91?

basE91 es una codificación de binario a texto diseñada por Joachim Henke. Usa 91 de los 95 caracteres ASCII imprimibles: todos excepto el espacio, el apóstrofo ', el guion - y la barra invertida \.

No trabaja con bloques fijos de bytes. El codificador acumula los bits de entrada en un búfer y los toma de 13 en 13. Si el valor de 13 bits es mayor que 88, se escribe como dos caracteres. Si es 88 o menos, se toma también un 14.º bit, que sigue cabiendo porque dos caracteres en base 91 pueden expresar 91 × 91 = 8281 valores distintos. Así, cada 13 o 14 bits se convierten exactamente en 2 caracteres.

El resultado es un aumento de tamaño de como máximo un 23 % aproximadamente, que baja hasta un 14 % en datos con largas series de bytes cero. Los datos aleatorios o comprimidos quedan cerca del límite superior.

Comparación de basE91 con otras codificaciones

CodificaciónCaracteresTamaño de la salida
Hexadecimal162 × entrada
Base5858aprox. 1,37 × entrada
Base64641,33 × entrada
Base85 / Ascii85851,25 × entrada
basE9191aprox. de 1,14 a 1,23 × entrada

Para comparar la longitud real de la salida con tus propios datos, escríbelos en Todas las codificaciones.

Aspectos que debes tener en cuenta

  • Escapes. El alfabeto contiene las comillas dobles ", que hay que escapar en JSON y en la mayoría de los literales de cadena, y <, > y &, que hay que escapar en HTML y XML. basE91 no es seguro para URL.
  • Decodifica la cadena completa. Como los bits cruzan los límites entre caracteres, un fragmento recortado del medio de una cadena basE91 no se puede decodificar por separado.
  • Compatibilidad. basE91 no es un estándar del IETF. El autor publica implementaciones de referencia en C y otros lenguajes, y existen adaptaciones para la mayoría de las plataformas, como el paquete base91 para Python.

Especificación

Alfabeto91 caracteres ASCII imprimibles
Tamaño de salidaAprox. 123%
RellenoNinguno
EstándarbasE91 (Joachim Henke)
Distingue mayúsculas y minúsculasSí

Ejemplos

Entrada (UTF-8)Salida
Hello, World!>OwJh>}AQ;r@@Y?F
Base64.isxD7gXm^?t#5
你好I_5k7aPE

Preguntas frecuentes

¿basE91 ocupa menos que Base64?

Sí. Base64 siempre añade un 33 %, mientras que basE91 añade como máximo un 23 % aproximadamente, y menos en datos con muchos bytes cero. En un archivo de 1 MB, eso supone un ahorro de unos 100 KB.

¿Qué caracteres usa basE91?
Las letras A-Z y a-z, los dígitos 0-9 y los símbolos !#$%&()*+,./:;<=>?@[]^_`{|}~". No se usan el espacio, el apóstrofo, el guion ni la barra invertida.
¿Por qué se escribe basE91?

Así es como escribe el nombre su autor. basE91 y Base91 se refieren a la misma codificación, y esta página sigue el algoritmo original.

¿Los espacios en blanco impiden la decodificación?

No. Los espacios y los saltos de línea no forman parte del alfabeto, así que este decodificador los ignora. Puedes pegar directamente texto basE91 dividido en líneas.