07. Codifica base 64

Com'è noto, sui computer i dati sono memorizzati in celle di memoria, dette byte, ciascuna delle quali può assumere un valore numerico compreso tra 0 e 255.

Quando i dati sono registrati sui file la situazione resta praticamente immutata.

Il problema nasce quando si vuole rappresentare il contenuto della memoria o di un file su schermo o stamparlo su carta.

La codifica ASCII, che associa ad ogni valore nel range da 0 a 127 un carattere, non offre una rappresentazione sufficiente e neanche la codifica ASCII estesa che opera nel range da 0 a 255 è adeguata perché non tutti i valori numerici sono associati a caratteri stampabili.

E' stata concepita allora una codifica ad hoc che opera su base 64.

Ad ogni valore nel range da 0 a 63 è associato un carattere stampabile come riportato in tabella, al quale si aggiunge un simbolo speciale di riempimento (padding), corrispondente al carattere uguale (=).

La tabella di codifica è simile a quella della tabella ASCII ma non opera sul byte ma su 6 bit.

Il seguente esempio mostra come si passa da una codifica su 8 bit ad una codifica su 6 bit.

In partenza l'esempio si pone in una situazione favorevole perché si considera una sequenza di caratteri stampabili rappresentati in base alla codifica ASCII. Questo non è sempre vero e può accadere che il byte non corrisponda ad un carattere ASCII stampabile.

Nella codifica su 6 bit invece il risultato è sempre una successione di caratteri stampabili.

Il carattere di padding interviene per gestire il caso in cui il numero complessivo di bit da codificare (nel nostro esempio 24) non sia multiplo di 6. In questo caso al testo originario si aggiungono uno o due byte posti a 0, in modo da rendere il numero di bit multiplo di 6. Un identico numero di caratteri di padding verrà aggiunto nella codifica in base 64.


Naturalmente la codifica in base 64 è reversibile e si può tornare al testo originario con un procedimento inverso.

Quando si rappresenta a video un file nella codifica in base 64, è possibile utilizzare le normali operazioni di copia e incolla senza incorrere in errori di interpretazione.

E' possibile trovare in linea molti tool di conversione che operano su base 64, ad esempio qui.