Codificatore e decodificatore Base36

Converti testo, byte esadecimali o file in Base36, l’alfabeto di dieci cifre e 26 lettere, e decodifica le stringhe Base36 in byte. L’output in maiuscolo è facoltativo.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Scegli Codifica per trasformare il testo in Base36, oppure Decodifica per riportare il Base36 in testo.
  2. Digita o incolla l’input, oppure apri un file piccolo (fino a circa 20 KB).
  3. Attiva Maiuscole se ti servono lettere maiuscole nell’output.
  4. Copia il risultato o scaricalo come file.

Che cos’è Base36?

Base36 scrive i dati con le dieci cifre e le 26 lettere dell’alfabeto latino, 0-9 seguite da a-z. È l’alfabeto più grande che si può costruire con cifre e lettere ignorando la differenza tra maiuscole e minuscole, quindi le stringhe Base36 restano intatte nei sistemi che cambiano o ignorano le maiuscole. Ogni carattere trasporta circa 5,17 bit, per cui l’output è grande circa 1,55 volte l’input, un po’ meno che con Base32.

Poiché 36 non è una potenza di due, i byte non si possono semplicemente suddividere in gruppi di bit. Lo strumento legge invece l’intero input come un unico grande numero senza segno e lo converte in base 36, lo stesso metodo usato da Base58. Un numero perderebbe i byte zero iniziali, quindi ciascuno di essi viene scritto come uno 0 iniziale e ripristinato in decodifica. Questi calcoli diventano lenti con input grandi, perciò lo strumento accetta fino a circa 20 KB.

Dove si usa Base36

  • ID brevi. Accorciatori di URL, numeri d’ordine e codici di ticket mostrano spesso in base 36 un ID numerico del database. Reddit, per esempio, usa la base 36 per gli ID di post e commenti.
  • Contesti che ignorano le maiuscole. I nomi DNS e alcuni file system non distinguono tra maiuscole e minuscole. Per questo motivo IPFS usa una forma Base36 di alcuni identificatori negli indirizzi dei gateway basati su sottodominio.
  • Numeri nel codice. La base 36 è la base più alta che la maggior parte dei linguaggi di programmazione supporta nativamente per la conversione degli interi.

Se la differenza tra maiuscole e minuscole viene preservata e vuoi la stringa alfanumerica più corta possibile, Base62 è più compatto.

Numeri Base36 nel codice

Questa pagina codifica byte. Per convertire un intero, usa le funzioni integrate del tuo linguaggio oppure il convertitore di basi numeriche:

// JavaScript
(1000000).toString(36)        // 'lfls'
parseInt('lfls', 36)          // 1000000
123456789012345678901234567890n.toString(36)   // BigInt per valori grandi

# Python
int('lfls', 36)               # 1000000
# non esiste una funzione integrata per la direzione inversa

parseInt perde precisione oltre Number.MAX_SAFE_INTEGER; per valori più grandi, accumula tu stesso le cifre in un BigInt.

Specifiche

Alfabeto0-9 a-z
Dimensione dell’outputCirca 155% (conversione come intero grande)
PaddingNessuno
StandardNessuno standard formale
Distingue maiuscole/minuscoleNo

Esempi

Input (UTF-8)Output
Hello, World!fg3h7vqw7een6jwwnzmp
Base64.is76f8bz4veeatf7
你好2h5exfqm65

Domande frequenti

Base36 distingue tra maiuscole e minuscole?

No. Per impostazione predefinita l’output è in minuscolo, e l’opzione Maiuscole lo passa in maiuscolo. Il decodificatore accetta entrambe le forme.

Perché un altro strumento dà un risultato Base36 diverso?

Base36 non ha uno standard formale. Alcuni strumenti codificano un numero, altri codificano byte, e trattano i byte zero iniziali in modo diverso. Questo strumento codifica i byte dell’input come un unico grande numero e scrive ogni byte zero iniziale come uno 0.

C’è un limite di dimensione?
Sì, circa 20 KB, perché la conversione di numeri grandi richiede più tempo man mano che l’input cresce. Per file e grandi quantità di dati sono più adatti Base32 o Base64.
Come si converte un numero in Base36?
Usa il convertitore di basi numeriche, che mostra un valore decimale in Base36 e in altre basi. Questa pagina tratta l’input come testo o byte, quindi se digiti 100 vengono codificati i caratteri 1, 0 e 0, non il numero cento.