Come esempio semplificato, considera un file di immagine aperto con un editor di testo.
L'immagine è un semplice motivo a scacchi, con i quadrati di 3 pixel di larghezza e un bordo grigio di 1 pixel tra ogni quadrato. - tre pixel neri, un pixel bordo grigio, tre pixel bianchi, un pixel bordo grigio, ripetere.
La prima riga in quell'immagine avrebbe il seguente valore quattro volte:
Black Black Black Gray White White White Gray
0x000000 0x000000 0x000000 0x7F7F7F 0xFFFFFF 0xFFFFFF 0xFFFFFF 0c7F7F7F
(In esadecimale, piuttosto che binario - la stringa in binario sarebbe quattro volte più lunga - 0x7F verrà sostituito con 0b01111111)
Se carichi quella stringa di dati in un editor di testo, otterrai il seguente testo:
[Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Del] [Del] [Del] [Vuoto] [Vuoto] [Vuoto] [Vuoto] [Vuoto ] [vuoto] [vuoto] [vuoto] [vuoto] [Del] [Del] [Del]
Questo perché 0x00 è il codice ASCII per il valore Null e devi scriverlo 3 volte per ottenere il valore per un pixel nero (comunque in BMP a 24 bit) e hai 3 pixel neri. Quindi 0x7F è il codice ASCII per Elimina e hai bisogno di QUEL tre volte per ottenere un pixel grigio. 0xFF non è un codice ASCII valido per nulla in particolare - anche nel set ASCII esteso - e devi scriverlo 9 volte per ottenere 3 pixel bianchi. Completandolo, ottieni altre tre eliminazioni per scrivere un pixel grigio.
Un modo diverso di mostrarlo, che potrebbe essere più utilmente esplicativo, è l'esempio inverso: cosa devi scrivere su un file per ottenere zero e quelli quando vengono aperti in un editor di testo?
I codici ASCII per zero e uno, ovviamente! Uno zero in un editor di testo non viene memorizzato come singolo bit con valore 0, viene archiviato come 8 bit con valore 0b00110000 o in esadecimale 0x30
Il codice ASCII per '0' è 0x30 e il codice ASCII per '1' è 0x31, quindi se si desidera memorizzare un modello di scacchi come zero e uno, il file sarà simile al seguente:
text editor:
10101010
01010101
10101010
01010101
Stored data (ASCII values for '1', '0' and 'new line'):
0x31 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x0D 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x31 0x0D 0x31 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x0D 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x31
C'è molto più di questo: i file hanno inizio e fine, metadati e tutti gli altri tipi di cose, ma la lezione da portare a casa e la risposta alla tua domanda è:
A meno che i primi 8 bit del tuo file siano 0b00110000, il tuo editor di testo non scriverà '0' perché è il codice ASCII per il carattere '0'. A meno che i primi 8 bit del tuo file siano 0b00110001, il tuo editor di testo non scriverà '1' perché quello è il codice ASCII per il carattere '1'.