Cómo se usa
- Elige Codificar para convertir texto o bytes en basE91, o Decodificar para convertir basE91 de nuevo en datos.
- Escribe o pega la entrada, o abre un archivo. Cambia el Formato de entrada a Hexadecimal si tienes bytes sin procesar.
- El resultado se actualiza mientras escribes. Al decodificar, elige Texto o Hexadecimal como Formato de salida.
- 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ón | Caracteres | Tamaño de la salida |
|---|---|---|
| Hexadecimal | 16 | 2 × entrada |
| Base58 | 58 | aprox. 1,37 × entrada |
| Base64 | 64 | 1,33 × entrada |
| Base85 / Ascii85 | 85 | 1,25 × entrada |
| basE91 | 91 | aprox. 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
base91para Python.
Especificación
| Alfabeto | 91 caracteres ASCII imprimibles |
|---|---|
| Tamaño de salida | Aprox. 123% |
| Relleno | Ninguno |
| Estándar | basE91 (Joachim Henke) |
| Distingue mayúsculas y minúsculas | Sí |
Ejemplos
| Entrada (UTF-8) | Salida |
|---|---|
Hello, World! | >OwJh>}AQ;r@@Y?F |
Base64.is | xD7gXm^?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?
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.