Codificatore e decodificatore Base91

Converti testo, byte esadecimali o file in basE91 e viceversa. basE91 racchiude i dati binari in 91 caratteri ASCII stampabili e produce un output più corto di Base64 o Base85.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Scegli Codifica per trasformare testo o byte in basE91, oppure Decodifica per riportare basE91 ai dati originali.
  2. Digita o incolla l’input, oppure apri un file. Per i byte grezzi imposta Formato input su Esadecimale.
  3. Il risultato si aggiorna mentre scrivi. In decodifica, scegli l’output Testo o Esadecimale.
  4. Copia il risultato o scaricalo come file.

Che cos’è basE91?

basE91 è una codifica da binario a testo ideata da Joachim Henke. Usa 91 dei 95 caratteri ASCII stampabili: tutti tranne lo spazio, l’apostrofo ', il trattino - e la barra rovesciata \.

Non lavora su blocchi fissi di byte. Il codificatore accumula i bit dell’input in un buffer e ne preleva 13 alla volta. Se il valore a 13 bit è maggiore di 88, viene scritto come due caratteri. Se è 88 o meno, si preleva anche un 14° bit, e il valore ci sta ancora, perché due caratteri in base 91 possono esprimere 91 × 91 = 8281 valori diversi. Ogni gruppo di 13 o 14 bit diventa quindi esattamente 2 caratteri.

Il risultato è un overhead massimo di circa il 23%, che scende fino a circa il 14% per dati con lunghe sequenze di byte zero. I dati casuali o compressi si avvicinano al limite superiore.

Confronto tra basE91 e le altre codifiche

CodificaCaratteriDimensione dell’output
Esadecimale162 × input
Base5858circa 1,37 × input
Base64641,33 × input
Base85 / Ascii85851,25 × input
basE9191da circa 1,14 a 1,23 × input

Per confrontare le lunghezze reali dell’output con i tuoi dati, digitali in Tutte le codifiche.

Cose da tenere presenti

  • Escape. L’alfabeto contiene le virgolette doppie ", che vanno sottoposte a escape in JSON e nella maggior parte dei letterali stringa, e <, > e &, che vanno sottoposti a escape in HTML e XML. basE91 non è sicuro per gli URL.
  • Decodifica l’intera stringa. Poiché i bit si estendono oltre i confini dei caratteri, un frammento estratto dal mezzo di una stringa basE91 non può essere decodificato da solo.
  • Supporto. basE91 non è uno standard IETF. L’autore pubblica implementazioni di riferimento in C e in altri linguaggi, e ne esistono port per la maggior parte delle piattaforme, come il pacchetto base91 per Python.

Specifiche

Alfabeto91 caratteri ASCII stampabili
Dimensione dell’outputCirca 123%
PaddingNessuno
StandardbasE91 (Joachim Henke)
Distingue maiuscole/minuscoleSì

Esempi

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

Domande frequenti

basE91 è più compatto di Base64?

Sì. Base64 aggiunge sempre il 33%, mentre basE91 aggiunge al massimo circa il 23%, e meno ancora per dati con molti byte zero. Per un file di 1 MB si risparmiano all’incirca 100 KB.

Quali caratteri usa basE91?
Le lettere A-Z e a-z, le cifre 0-9 e i simboli !#$%&()*+,./:;<=>?@[]^_`{|}~". Spazio, apostrofo, trattino e barra rovesciata non vengono usati.
Perché si scrive basE91?

È la grafia scelta dal suo autore. basE91 e Base91 indicano la stessa codifica, e questa pagina segue l’algoritmo originale.

Gli spazi bianchi compromettono la decodifica?

No. Spazi e interruzioni di riga non fanno parte dell’alfabeto, quindi il decodificatore di questa pagina li ignora. Puoi incollare direttamente testo basE91 suddiviso in righe.