Perché abbiamo la codifica Base64? Sono un principiante e davvero non capisco perché vorresti offuscare i byte in qualcos'altro (a meno che non sia crittografia). In uno dei libri che ho letto la codifica Base64 è utile quando la trasmissione binaria non è possibile. Per esempio. Quando pubblichiamo un modulo è codificato. Ma perché convertiamo i byte in lettere? Non potremmo convertire solo byte in formato stringa con uno spazio intermedio? Ad esempio, 00000001 00000004
? O semplicemente 0000000100000004
senza spazio perché i byte vengono sempre in coppia di 8?Qual è il vero scopo della codifica Base64?
risposta
Base64 è un modo per codificare i dati binari in un set di caratteri ASCII noto a quasi tutti i sistemi di computer, al fine di trasmettere i dati senza perdita o modifica dei contenuti stessi. Ad esempio, i sistemi di posta non possono gestire dati binari perché si aspettano dati ASCII (testuali). Quindi, se si desidera trasferire un'immagine o un altro file, questo verrà danneggiato a causa del modo in cui gestisce i dati.
Nota: la codifica base64 NON è un modo di crittografare, né un modo di compattare i dati. In effetti, una porzione di dati codificati in base 64 è 1.333 ... volte più grande del datapiece originale. È solo un modo per essere sicuri che nessun dato venga perso o modificato durante il trasferimento.
I dati codificati Base64 sono esattamente 1.333 (3) volte più grandi dei dati originali + ulteriori 0-3 caratteri extra a seconda della lunghezza dei dati di input modulo 4. È perché ogni carattere codificato Base64 memorizza 6 bit di informazioni (64 caratteri diversi). – too
sia prima che dopo i dati sono ancora binari. allora perché i dati subiscono una perdita –
Base64 è un modo più o meno compatto di trasmettere (codificare, infatti, ma con l'obiettivo di trasmettere) qualsiasi tipo di dati binari.
Vedi http://en.wikipedia.org/wiki/Base64
"La regola generale è quello di scegliere una serie di 64 caratteri che è sia parte di un sottoinsieme comune alla maggior parte codifiche, e anche stampabili."
Questo è uno scopo molto generale e il bisogno comune non è quello di sprecare più spazio del necessario.
Storicamente, si basa sul fatto che esiste un sottoinsieme comune di (quasi) tutte le codifiche utilizzate per memorizzare i caratteri in byte e che molti dei possibili byte 2^8 rischiano perdite o trasformazioni durante il trasferimento di dati semplice (per esempio una sequenza copy-paste-emailsend-emailreceive-copia-incolla).
(si prega di reindirizzare in suvote al commento di Brian, l'ho appena reso più completo e, si spera, più chiaro).
Nah, è solo presto e non ho voglia di dare una risposta completa. Questo è buono. –
Vedi, posso tornare indietro usando Base64 per copiare/incollare dati binari come testo senza dovermi preoccupare di caratteri non stampabili (come un URL dati per contenere, ad esempio, dati immagine, in una stringa). Quello che non capisco è quando le persone lo usano per codificare il testo normale. Come il modo * Hyper Light Drifter * memorizza i suoi dati di salvataggio in una stringa JSON e quindi lo codifica in Base64.È un passaggio extra non necessario nel salvataggio/caricamento che non fa nulla di utile, e richiede più tempo e spazio. Se non potevano essere fottuti per scrivere il proprio sistema di salvataggio, quanto altro nel gioco è stato sorvolato? –
Base64 è un meccanismo per abilitare la rappresentazione e il trasferimento di dati binari su supporti che consentono solo caratteri stampabili. È la forma più popolare della "codifica di base", mentre gli altri noti in uso sono Base16 e Base32.
La necessità di Base64 è nata dalla necessità di allegare contenuti binari a e-mail come immagini, video o contenuto binario arbitrario. Dal momento che SMTP [RFC 5321] consentito solo caratteri US-ASCII 7-bit all'interno dei messaggi, vi era la necessità di rappresentare questi flussi ottetto binari utilizzando i caratteri ASCII a sette bit ...
Spero che questo risponde alla domanda
Perché hai appena trasformato 1 byte in 8 anziché 3 in 4 come fai con base64 (se la memoria mi serve correttamente). La larghezza di banda è finita. –
Stai confondendo bit (con 8 bit che fai un byte) e byte, che possono arrivare in qualsiasi tipo di raggruppamento. –