Un fichier binaire ? Moi je ne vois pas que des 1 et des 0 :|

a marqué ce sujet comme résolu.

Hello,

je viens vers vous aujourd'hui car lorsque je compile un projet que je code en go, normalement vu que c'est compilé cela devrais me sortir des 1 et des 0 mais la non cela me sors du chinois mélangé avec de l'anglais.

Donc je veux en venir à cette question : Pourquoi cela ne me sors pas un fichier binaire ?

Merci d'avance.

Arck

Parce que la notion de « fichier binaire » ou « fichier texte » n'existe pas en réalité. Tu n'as que des séries de données et une façon de les interpréter – certaines étant « comme du texte ».

Donc, si tu interprètes un fichier qui n'est pas du texte comme du texte, ça va te sortir… ben probablement des caractères sans aucun sens, selon l'encodage utilisé.

le binaire, comme tu l'as dit, c'est une suite de 0 et de 1.

Cependant, les 0 ou 1 binaires d'un fichier ne sont pas codés par le caractère '0' ou '1', car cela serait beaucoup trop gros. Lorsque tu essaye de lire ton fichier (je suppose avec un éditeur de texte quel qu'il soit), ce programme va essayer de lire du texte, donc des octets (ou plusieurs octets selon l'encodage), donc un groupe d'au moins 8 bits d'un coup, donc de 0 et de 1.

Ainsi, lorsque tu liras ton fichier avec ton éditeur de texte, il t'affichera le caractère qui correspond à un ensemble de bits.

Exemple : Si tu vois affiché un 'A', i est fort probable que le code binaire caché en dessous soit 0100 0001 (qui correspond au code ascii du 'A'). Tu as donc huit 0 ou 1 cachés derrière cette lettre.

+6 -0

Juste deux choses à ajouter à ce qui a été dit :

  • Si tu veux afficher une représentation binaire de ton fichier, tu peux utiliser xxd -b ;
  • Pour les mots anglais que tu vois apparaître, ils correspondent aux symboles et chaînes constantes de ton programme ; n'étant que des chaînes d'octets, elles sont retranscrites telles quelles dans le fichier de destination, et tu les vois donc apparaître quand tu affiches le contenu du fichier.

En général pour afficher le contenu d'un fichier binaire on utilise plutôt hexdump (ou hexdump -C).

Certes ça l'affiche sous forme hexadécimale (avec la représentation ASCII des octets à droite et l'offset à gauche), mais c'est vraiment la façon "standard" d'inspecter une donnée quelconque.

La représentation en binaire n'a quasiment aucun intérêt pour un utilisateur humain, contrairement à la notation hexadécimale qui permet de découper très facilement la donnée (un octet = 2 chiffres).

+1 -0

Salut nohar,

j'ai un petit soucis à propos de ça ^^

Je fais un hexdump d'un fichier qui contient du texte en l'occurence "max 5 10" cela me retourne 00000000 6d 61 78 20 35 20 31 30 0a 00000009

Pourtant quand je vais sur un site de convertisseur hexadecimal / assci cela ne me retourne pas "max 5 10" :(

Merci d'avance !

+0 -0
1
2
3
4
% echo "max 5 10" > monfichier
% hexdump -C monfichier
00000000  6d 61 78 20 35 20 31 30  0a                       |max 5 10.|
00000009

La colonne de gauche est "l'offset" (la position dans le fichier binaire, en hexadécimal), celle du milieu décrit les octets qui composent le fichier, celle de droite montre la représentation ascii de ces mêmes octets si elle est possible. En l'occurence on a un fichier de 9 octets qui contient la chaîne "max 5 10", terminée par l'octet 0a (le caractère spécial CR, ou "\n").

Si je convertis cette colonne du milieu dans une console Python, j'obtiens bien la chaîne originelle :

1
2
3
>>> octets = "6d 61 78 20 35 20 31 30  0a".split()
>>> ''.join(chr(int(oct, 16)) for oct in octets)
'max 5 10\n'
+1 -0

Sinon, il y a plein de sites où tu trouveras les tables de correspondance entre les codes hexa des caractères, et le caractère lui-même (je fais l'impasse sur les histoires d'UTF8 …)

Même s'il n'est pas question d'essayer d'apprendre par coeur tout l'alphabet, si c'est un domaine qui te concerne, tu sauras très vite reconnaître certains caractères. Par exemple le caractère qui portent le n°20, c'est le caractère Espace ; les caractères entre 30 et 39, les 9 chiffres 0 à 9, et les nombres 61 à 69, les 9 premières lettres de l'alphabet, les nombres 6a à 6f, ce sont les 6 lettres suivantes, etc etc

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte