Codificador y decodificador Base91
Pega texto o bytes en hex para codificarlos con basE91, o cambia a Decodificar para recuperar el texto o los bytes. basE91 usa 91 caracteres ASCII imprimibles, así que su salida es bastante más corta que Base64 para los mismos datos.
Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.
Cómo se usa
- Elige Codificar o Decodificar.
- Indica Bytes como: Texto (UTF-8) para texto normal o Bytes en hex para datos binarios escritos en hexadecimal.
- Escribe o pega la entrada y copia el resultado.
Cómo funciona
basE91 mantiene una cola de bits. Cada byte de entrada se añade a ella; cuando hay más de 13 bits esperando, el codificador mira los 13 bits bajos:
- si su valor es mayor que 88, toma esos 13 bits;
- si no, toma 14 bits (un valor de 14 bits cuyos 13 bits bajos valen 88 o menos sigue siendo menor que 91 × 91 = 8281).
El bloque v se escribe con dos caracteres: v mod 91 y luego v div 91. Al final, los bits restantes dan uno o dos caracteres más. El decodificador hace lo contrario: lee los caracteres por parejas, reconstruye v y sabe por su valor si llevaba 13 o 14 bits.
Ejemplo
Codificar el texto test (bytes 74 65 73 74):
- los dos primeros bytes dejan la cola en 0x6574; sus 13 bits bajos son 0x0574 = 1396, mayor que 88, así que se toman 13 bits;
- 1396 mod 91 = 31 → f, 1396 div 91 = 15 → P;
- el resto de los bytes sigue igual y el resultado es fPNKd.
Hello, World! se codifica como >OwJh>}AQ;r@@Y?F.
Consejos
- La salida de basE91 lleva “ y otros símbolos: ponla entre comillas simples en la terminal o escápala en JSON.
- No hay relleno ni suma de control: una cadena cortada se decodifica en menos bytes sin avisar.
- Para URL o nombres de archivo, es mejor Base64 en su variante URL o Base58.
Preguntas frecuentes
¿Qué es basE91?
Una codificación de binario a texto creada por Joachim Henke. Lee la entrada de 13 en 13 o de 14 en 14 bits y escribe cada bloque con dos caracteres de un alfabeto de 91 caracteres ASCII imprimibles: A–Z, a–z, 0–9 y los símbolos !#$%&()*+,./:;<=>?@[]^_`{|}~".
¿Cuánto más corto es basE91 que Base64?
Base64 siempre añade un 33 % (4 caracteres por 3 bytes). basE91 añade entre un 14 % y un 23 % según los datos, porque 91 × 91 = 8281 valores caben en 13 bits y a menudo en 14. Hello, World! (13 bytes) ocupa 16 caracteres en basE91 y 20 en Base64.
¿Qué caracteres evita basE91?
El espacio, el apóstrofo ('), el guion (-) y la barra invertida (\), además de los caracteres de control. Por eso la salida es segura en la mayoría de campos de texto, pero lleva comillas y símbolos, así que no sirve en URL ni en nombres de archivo sin escapar.
¿Se admiten saltos de línea en el texto codificado?
Sí. Al decodificar se saltan espacios y saltos de línea, así que un basE91 partido en líneas se decodifica bien. Cualquier otro carácter fuera del alfabeto se marca como error.