La codifica da binario a testo serve a rappresentare i dati binari come caratteri.
Anche i dump esadecimali dei file binari fanno lo stesso per leggere i file binari.
Sono collegati o cose diverse?
La codifica da binario a testo serve a rappresentare i dati binari come caratteri.
Anche i dump esadecimali dei file binari fanno lo stesso per leggere i file binari.
Sono collegati o cose diverse?
Penso che dare un'occhiata ad alcuni esempi di codifica binaria-testo potrebbe aiutare a chiarire questo problema. Questi sono estratti dal tuo link di Wikipedia.
Ad esempio, iniziamo con "Percent Encoding". Probabilmente hai visto questo in URL, con tutti i tipi di cose come "% 20" in mostra (che rappresenta uno spazio). La trasmissione di dati binari grezzi (e anche alcune cose come gli spazi) non è consentita come parte di un URL, ma di volta in volta sarebbe bello avere un modo per dire a un computer all'altro capo di alcuni binari "fuori banda" informazione. In questo modo, "Percent Encoding" agisce semplicemente come un tunnel molto inefficiente per i dati binari - innocuo perché è testo, a meno che l'altra estremità non stia cercando in modo specifico i dati binari. D'altra parte, leggere la codifica sembra qualcosa di simile a un dump esadecimale e non è impossibile decodificarlo a mano.
O considera Uuencoding o l'utilizzo di Base64 da parte di MIME. Qui l'obiettivo non è solo quello di scomporre i dati binari sul testo, ma di farlo in modo tale che il trasferimento sia abbastanza efficiente. Tuttavia, è molto più difficile leggerlo e darne un senso.
Nota che in entrambi i casi il web costituisce uno sfondo comune dietro l'utilizzo della tecnologia. Non credo che questo sia un incidente, in quanto le tecnologie web sono state progettate per lo scambio e il testo (per alcune definizioni di testo) costituisce una sorta di minimo comune denominatore.
Ora confrontalo con un dump esadecimale. L'intero punto di un dump esadecimale è quello di trasmettere informazioni binarie a voi - non a un computer - con facilità. In entrambi i casi è il trasferimento di informazioni binarie a un pubblico specifico attraverso i mezzi consentiti, quindi c'è un po 'di comunanza. Ma per il binario-testo di solito è un computer e tramite ASCII, e per un dump esadecimale è per una persona tramite esadecimale. Detto questo, un dump esadecimale potrebbe sicuramente essere usato come metodo da binario a testo in un pizzico.
Nota a margine: penso che l'inclusione di S-Records (ecc.) nell'elenco sia interessante. Suppongo che potrebbero essere considerate codifiche binarie-testuali, ma in senso stretto possono trasmettere non solo uno specifico file binario, ma piuttosto agire come una patch binaria - che è un obiettivo più ampio; la codifica da binario a testo è probabilmente più precisamente una parte dell'S-Record. Se stavo cercando di apprendere le codifiche binarie-testuali, mi sento come se queste potessero infangare un po 'le acque.
Una codifica da binario a testo è qualcosa progettato per il trasferimento efficiente dei dati attraverso un mezzo "solo testo" piuttosto che per la leggibilità umana. Un dump esadecimale è qualcosa progettato per la leggibilità umana e non l'efficienza.
Se converti il binario in cifre esadecimali, stai considerando un massimo di 4 bit di dati binari per carattere. Ciò significa che le dimensioni del testo saranno almeno due volte più grandi dei dati binari originali.
Questo presuppone che non ci siano spazi o nulla tra i numeri esadecimali. Per un dump esadecimale ci sono spazi tra loro che riducono ulteriormente l'efficienza. Ad esempio, potresti avere uno spazio tra ogni coppia di cifre, un indirizzo o offset a sinistra, un nuovo carattere di linea a destra, ecc.
Per un migliore "binario in testo" si utilizzerà una base più grande per ridurre il numero di caratteri. Ad esempio, se è possibile utilizzare 64 caratteri, è possibile convertire il binario in base64 (e non in base16), e in tal caso si ottengono 6 bit di dati binari in ogni carattere e la dimensione del testo sarà di 1.3333 volte più grande di dati binari (anziché 2 volte più grandi o peggio).
Il caso migliore (supponendo che i caratteri siano di dimensioni fisse) è quello di usare quanti più caratteri possibile; che dipende da dove sta andando il testo (ad esempio se passa attraverso una porta seriale "ASCII 7 bit" potresti usare 128 caratteri, se sta andando in XML potresti non essere in grado di usare un gruppo di caratteri di controllo e essere lasciato con forse 95 caratteri, se deve essere insensibile alle maiuscole e minuscole potresti essere in basso a circa 50 caratteri, ecc.)
Un dump esadecimale avrà caratteri 0..9 e A..F, un byte diventa una coppia di caratteri.
da binario a testo ha caratteri 0..9, A..Z e a..z e punteggiatura, ecc. Il testo include spesso una semplice compressione, ad esempio 3 byte possono essere divisi in 4 caratteri. Ma è anche possibile utilizzare una compressione più complessa, ad es. LZMA.
Leggi altre domande sui tag character-encoding binary