Comme exemple simplifié, considérons un fichier image ouvert avec un éditeur de texte.
L'image est un motif d'échecs simple, avec des carrés de 3 pixels de large et une bordure grise de 1 pixel entre chaque carré. - trois pixels noirs, un pixel de bordure grise, trois pixels blancs, un pixel de bordure grise, répétez.
La première ligne de cette image aurait la valeur suivante quatre fois:
Black Black Black Gray White White White Gray
0x000000 0x000000 0x000000 0x7F7F7F 0xFFFFFF 0xFFFFFF 0xFFFFFF 0c7F7F7F
(En hexadécimal plutôt qu'en binaire - la chaîne en binaire serait quatre fois plus longue - 0x7F étant remplacé par 0b01111111)
Si vous chargez cette chaîne de données dans un éditeur de texte, vous obtiendrez le texte suivant:
[Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Suppr] [Suppr] [Suppr] [Suppr] [Vierge] [Vierge] [Vierge] [Vierge ] [Blank] [Blank] [Blank] [Blank] [Suppr] [Suppr] [Suppr]
En effet, 0x00 est le code ASCII de la valeur Null et vous devez l'écrire 3 fois pour obtenir la valeur d'un pixel noir (dans le format BMP 24 bits quand même) et vous disposez de 3 pixels noirs. Alors 0x7F est le code ASCII pour supprimer, et vous avez besoin de trois fois pour obtenir un pixel gris. 0xFF ne vaut pas le code ASCII valud pour quelque chose en particulier - même dans le jeu ASCII étendu - et vous devez l'écrire 9 fois pour obtenir 3 pixels blancs. En terminant, vous obtenez trois autres suppressions pour écrire un pixel gris.
Une autre façon de le montrer, ce qui pourrait être plus explicatif, est l’exemple inverse: que devez-vous écrire dans un fichier pour obtenir des zéros et des uns lorsqu’il est ouvert dans un éditeur de texte?
Les codes ASCII pour zéro et un, bien sûr! Un zéro dans un éditeur de texte n'est pas stocké en tant que bit unique avec la valeur 0, il est stocké en tant que 8 bits avec la valeur 0b00110000 ou en hexadécimal 0x30.
Le code ASCII pour '0' est 0x30 et le code ASCII pour '1' est 0x31. Si vous voulez stocker un motif d'échecs en tant que zéros et uns, votre fichier ressemblera à ceci:
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
Il y a bien plus que cela: les fichiers ont des débuts, des arrêts, des métadonnées et toutes sortes d'autres choses, mais la leçon à tirer et la réponse à votre question sont les suivantes:
À moins que les 8 premiers bits de votre fichier ne soient 0b00110000, votre éditeur de texte n'écrira pas '0' car il s'agit du code ASCII du caractère '0'. À moins que les 8 premiers bits de votre fichier ne soient 0b00110001, votre éditeur de texte n'écrira pas '1' car il s'agit du code ASCII du caractère '1'.