2009-11-05 17 views
31

Qual è il vantaggio dell'uso della codifica Base64?Qual è il vantaggio dell'uso della codifica Base64?

Mi piacerebbe capirlo meglio. Ne ho davvero bisogno? Non posso semplicemente usare stringhe pure?

Ho sentito dire che la codifica può essere fino al 30% più grande dell'originale (almeno per le immagini).

+1

La codifica Base64 emette 4 byte di dati stampabili per ogni 3 byte di dati binari. Se si inseriscono periodicamente anche newline (ad esempio, i programmi di posta limitano la lunghezza della linea a 64 o 72 caratteri), si ottiene un byte in più 48 o 54 byte di input per la nuova riga (a meno che non si giochi con terminazioni di riga CRLF quando si ottengono 2 byte per riga). –

+5

Per gli svantaggi, guarda qui http://stackoverflow.com/questions/14418785 – Val

+0

Utilizza questo link per una comprensione chiara. http: // StackOverflow.com/a/201510/3979414 – Kumar

risposta

39

In origine alcuni protocolli consentivano solo dati a 7 bit ea volte solo a 6 bit.

Base64 consente di codificare i dati a 8 bit in 6 bit per la trasmissione su tali tipi di collegamenti.

L'e-mail è un esempio di questo.

+3

Principalmente 7 bit perché l'ottavo bit è stato utilizzato per la parità su molti protocolli di trasmissione seriale. –

+1

Gran dettaglio non avrei mai pensato. Mi sento aggiornato. – Ismael

+0

Non è possibile utilizzare stringhe binarie nella posta elettronica perché potrebbe entrare in collisione con i caratteri di controllo. –

37

Il caso d'uso principale della codifica base64 è quando si desidera memorizzare o trasferire dati con un set limitato di caratteri; vale a dire quando non è possibile passare un valore arbitrario in ogni byte.

+6

E anche, se si desidera inviare dati binari su protocolli di stringa (come JSON) dove Bianry potrebbe rompere la stringa a causa di caratteri indesiderati come virgolette 0x00, ecc ... –

+1

Rafal: Questa è fondamentalmente un'istanza di un "set di caratteri limitato". –

+1

Vorrei poter approvare anche la tua risposta. Bella risposta. – Ismael

0

Se usarlo o meno dipende da cosa lo stai usando.

L'ho usato principalmente per codificare i dati binari per passare attraverso un meccanismo che è stato veramente creato per i file di testo. Ad esempio, quando si passa una richiesta di certificato digitale in giro o si recupera il certificato digitale finito, in questi casi è spesso molto conveniente passare i dati binari come Base 64 tramite un campo di testo su un modulo Web.

Probabilmente non lo userei se hai qualcosa che è già testo e vuoi solo passarlo da qualche parte.

5

Un'applicazione consiste nel trasferire dati binari in contesti in cui sono consentiti solo caratteri. Per esempio. in documenti/trasferimenti XML. XML-RPC è un esempio di questo.

0

Lo uso per aggirare file che tendono a essere masticati dai programmi di posta elettronica perché sembrano file di testo (ad esempio, trascrizioni HL7 per riproduzione).

12
<img alt="Embedded Image" 
    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." /> 

Questo codice mostrerà l'immagine codificata, ma nessuno può collegarsi a questa immagine da un altro sito Web e utilizzare il proprio traffico.

Base64 decode

2

convertire i dati BLOB a stringa e viceversa ...

3

I vantaggi di base64 codificare, come qualcuno ha detto, sono a disposizione per trasmettere i dati dal binario, in (più comunemente) caratteri ASCII. A causa della probabilità che l'endpoint di ricezione possa gestire ASCII, è un buon modo per trasferire dati binari, tramite un flusso di testo. Se la tua situazione è in grado di gestire dati binari nativi, molto probabilmente otterrai risultati migliori, in termini di velocità e simili, ma in caso contrario, base64 è molto probabilmente la strada da percorrere. JSON è un ottimo esempio di quando trarrai beneficio da qualcosa di simile, o quando deve essere memorizzato in un campo di testo da qualche parte. Dacci qualche altro dettaglio e possiamo fornire una risposta su misura migliore.

Problemi correlati