Sono un po 'curioso sul motivo per cui si vorrebbe usare la codifica esadecimale su base64. Mi sembra che la base 64 sia più efficiente. In particolare, perché i database sembrano sempre utilizzare la codifica esadecimale? È un problema storico o mi manca qualcosa sulla codifica esadecimale?Qual è lo scopo della codifica esadecimale per i dati binari?
risposta
Devi essere un vero fanatico per leggere BASE64
dallo schermo.
In Oracle
, quando corro HEXTORAW
, posso avere un'idea di ciò che è in un campo RAW
, ma non ho potuto con BASE64
.
Come quando vedo un sacco di 0x3F
, so che c'è qualcosa con la codifica.
E internamente, questi sono solo byte binari, non c'è altra necessità di codificarli ma di mostrarli a una persona dall'altra parte dello schermo.
Immagino che il database stia effettivamente memorizzando i dati come binari, ma l'editor di query lo mostrerà utilizzando la codifica esadecimale. Questo è ciò che farà SQL Query Analyzer.
Credo che sia solo una questione di preferenza personale ... Hex è di gran lunga più facile per me leggere poi qualcosa in Base32 o Base64
Si tratta di un buon compromesso tra l'utilizzo dello spazio efficiente e leggibilità. Gli schemi bit diventano molto evidenti in esadecimale, mentre le altre basi non sono chiare.
che è più facile da leggere, 0x8080 o 32896? Direi che il valore esadecimale è.
Ha anche la buona proprietà di ogni cifra esadecimale uguale a un nibble (quindi ogni coppia equivale a un byte).
E 'molto più facile dare un senso a esadecimale nella tua testa di base di 64.
Per quanto riguarda la base di dati, ben tenere a mente che v'è una differenza tra la modalità di visualizzazione dei dati e modalità di conservazione. È molto probabile che mostri semplicemente i dati come esadecimale.
Base64 non funziona se si desidera utilizzare i valori risultanti come nomi di file su Windows, in quanto base64 utilizza lettere maiuscole e minuscole. Sono sicuro che ci sono altre volte in cui non può essere usato per ragioni simili.
Accetto con altre risposte sulla leggibilità: le cifre esadecimali si allineano bene su byte da 8 bit, mentre le "cifre" base64 no e una cifra può contenere parti di due byte.
Un po 'di caso d'angolo, ma una buona ragione per non usare lo stesso base64. –
Nel caso dell'archiviazione di stringhe (con codifica "potenzialmente" XML-safe), è possibile ottenere un'efficienza ancora maggiore con ASCII 85 poiché è 5/4 in più rispetto a 4/3 per base64.
Ma è ancora più difficile "leggere" quindi base64. E non molte applicazioni lo supportano così spesso è necessario scrivere le proprie classi/funzioni per eseguire la codifica e la decodifica.
Devi solo convertirlo in base64 se hai bisogno di inviare da qualche parte su ASCII, per essere decodificato di nuovo in binario e utilizzato. –