Altre risposte chiariscono la differenza di efficienza tra base16 e base64.
C'è più per basare la selezione che l'efficienza.
Base64 utilizza più di lettere e numeri. Different implementations utilizza diversi caratteri di punteggiatura per indicare il riempimento e creare gli ultimi due caratteri del set di 64. Questi possono includere più "+" e uguale a "=". entrambi problematici nelle stringhe di query HTTP.
Quindi un motivo per favorire base16 su base64 è che i valori di base16 possono essere composti direttamente nelle stringhe di query HTTP senza richiedere ulteriore codifica. È importante per te?
Si noti che questa è una preoccupazione aggiuntiva, al di là dell'efficienza. Nessuna base è intrinsecamente migliore o peggiore; sono solo due punti diversi su una scala, in cui troverai proprietà diverse che saranno più o meno interessanti in diverse situazioni.
Ad esempio, considerare base32. È 20% meno efficiente di base64, ma è ancora adatto per l'uso nelle stringhe di query HTTP. La maggior parte della sua inefficienza deriva dall'essere insensibile alle maiuscole e minuscole, evitando zero "0" e uno "1", agli errori nella riproduzione da parte dell'uomo.
Quindi base32 introduce una nuova preoccupazione; facilità di riproduzione per l'uomo. È una preoccupazione per te? Se non lo è, si può andare per qualcosa come base62, che è ancora conveniente nelle stringhe di query HTTP, ma è case sensitive e include zero "0" e "1".
Si spera, ho chiarito che la selezione della base di codifica è una questione di scorrimento lungo una scala fino a ottenere la migliore efficienza possibile prima di sacrificare ciò che è importante per te.
Wikipedia ha una lista divertente di numeral systems.
Quindi quello che stai dicendo è che se hai questo numero binario 1110 hex prenderà due caratteri per ogni byte, quindi tecnicamente avresti detto AABBCCDD che poi sarebbe il valore esadecimale, ma in Base64 ci vogliono tre caratteri AAABBBCCCDDD. Questo sarebbe il modo tecnico per guardarlo. Sono sicuro che il AABBCCDD non è il valore corretto in esadecimale per il numero. Perché alcune funzioni di hash restituiscono il valore in lunghezze leggermente diverse. Per esempio ho avuto un esempio MD 5 questa mattina che ho provato con A poi B e poi C e il valore di hash B era un carattere in meno rispetto agli altri due. Doug –