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

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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

En fait c'est l'histoire d'un type qui à fait une blague à un parisien et il a pas ris voila voila

+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

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é.

Cette réponse a aidé l'auteur du sujet

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.

Édité par joseph

+7 -0

Cette réponse a aidé l'auteur du sujet

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.
Auteur du sujet

He ben merci beaucoup à vous j'y vois plus clair :)

P.S : entwanne Premiere fois que je fois du binaire xD Merci pour cette commande :)

En fait c'est l'histoire d'un type qui à fait une blague à un parisien et il a pas ris voila voila

+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

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).

Édité par nohar

I was a llama before it was cool

+1 -0
Auteur du sujet

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 !

Édité par Arckazur

En fait c'est l'histoire d'un type qui à fait une blague à un parisien et il a pas ris voila voila

+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

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'

Édité par nohar

I was a llama before it was cool

+1 -0

Cette réponse a aidé l'auteur du sujet

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

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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