Come si usa
- Scegli Codifica per trasformare testo o byte in basE91, oppure Decodifica per riportare basE91 ai dati originali.
- Digita o incolla l’input, oppure apri un file. Per i byte grezzi imposta Formato input su Esadecimale.
- Il risultato si aggiorna mentre scrivi. In decodifica, scegli l’output Testo o Esadecimale.
- 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
| Codifica | Caratteri | Dimensione dell’output |
|---|---|---|
| Esadecimale | 16 | 2 × input |
| Base58 | 58 | circa 1,37 × input |
| Base64 | 64 | 1,33 × input |
| Base85 / Ascii85 | 85 | 1,25 × input |
| basE91 | 91 | da 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
base91per Python.
Specifiche
| Alfabeto | 91 caratteri ASCII stampabili |
|---|---|
| Dimensione dell’output | Circa 123% |
| Padding | Nessuno |
| Standard | basE91 (Joachim Henke) |
| Distingue maiuscole/minuscole | Sì |
Esempi
| Input (UTF-8) | Output |
|---|---|
Hello, World! | >OwJh>}AQ;r@@Y?F |
Base64.is | xD7gXm^?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?
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.