Base64, esadecimale, codifica percentuale e Base85: scegli in base al trasporto

Confronta l'overhead di byte, l'escape e l'interoperabilità senza confondere la codifica del testo con la conversione digitale numerica.

Una codifica è utile solo se entrambe le estremità sono d'accordo. La rappresentazione più piccola non è necessariamente la scelta migliore quando il ricevitore ha bisogno di un alfabeto familiare, il carico utile deve essere digitato da una persona o la sintassi circostante tratta determinati caratteri in modo speciale. Iniziamo dal protocollo di ricezione.

Hex è dettagliato ma facile da ispezionare

L'esadecimale scrive ogni byte come due cifre. La sequenza di byte FF 00 41 diventa ff0041. Ogni coppia ha un limite di byte visibile, che aiuta durante l'ispezione delle firme dei file, dei checksum e dei pacchetti di protocollo. Raddoppia il numero di caratteri, ma il suo piccolo alfabeto di solito si adatta facilmente ai log e agli strumenti di debug.

Base64 bilancia dimensioni e interoperabilità

Base64 rappresenta tre byte con quattro caratteri. È un adattamento comune per i campi binari all'interno di formati basati su testo. Lo standard Base64 include più e barra; Base64URL sostituisce questi caratteri quando un protocollo necessita di un alfabeto diverso. Le regole di riempimento e degli spazi bianchi necessitano ancora di un accordo. Nessuno dei due moduli dice al ricevitore se i byte decodificati sono testo, un'immagine o contenuto compresso.

La codifica percentuale appartiene ai componenti URL

La codifica percentuale scrive un byte di escape come %HH. Non è semplicemente un sostituto in blocco di Base64. Il componente determina quali caratteri devono essere sottoposti a escape e il testo deve essere prima codificato come UTF-8. Una barra può separare i segmenti del percorso mentre un punto interrogativo avvia una query; trattare l'intero URL come un componente opaco ne cambia il significato.

console.log(encodeURIComponent('a+b / 中文'));
// a%2Bb%20%2F%20%E4%B8%AD%E6%96%87

Base85 necessita di una variante esatta

Molti schemi Base85 rappresentano quattro byte con cinque caratteri, ma i loro alfabeti, delimitatori e casi speciali differiscono. ASCII85 e Z85 non possono essere considerati intercambiabili. Z85 impone anche requisiti relativi alle dimensioni del blocco. Un alfabeto ad alta densità può contenere segni di punteggiatura che devono essere nuovamente eliminati nel formato circostante, riducendo l'apparente vantaggio.

Non confondere queste codifiche di byte con la conversione dell'intero 255 tra basi numeriche. Un file può iniziare con zero byte, mentre una rappresentazione intera può scartare quegli zeri iniziali. Un codec di file reversibile deve definire come vengono preservati la lunghezza e gli zeri iniziali.

Utilizza Hex per l'ispezione dei byte, la variante Base64 specificata per il trasporto binario interoperabile, la codifica dei componenti URL per gli URL e uno schema specializzato solo quando entrambe le parti implementano lo stesso contratto. Confronta le dimensioni end-to-end dopo l'escape e la compressione. RFC 4648 definisce le famiglie standard Base16, Base32 e Base64, inclusi i loro alfabeti distinti.