2009-06-18 6 views
5

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

5

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.

+0

Devi solo convertirlo in base64 se hai bisogno di inviare da qualche parte su ASCII, per essere decodificato di nuovo in binario e utilizzato. –

0

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.

0

Credo che sia solo una questione di preferenza personale ... Hex è di gran lunga più facile per me leggere poi qualcosa in Base32 o Base64

3

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.

2

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.

+0

Un po 'di caso d'angolo, ma una buona ragione per non usare lo stesso base64. –

1

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.