Page 1 sur 1

[fichier binaire] (en cours)

Publié : ven. 29 avr. 2016, 14:40
par AchilleFraisse
Bonjour,
Ont dit toujours que les fichiers binaires sont des fichiers composé de 0 et de 1 uniquement. Mais pourquoi quand je l'ouvre avec vim, je ne vois pas de 0 et de 1 ?

Re: [fichier binaire] (en cours)

Publié : ven. 29 avr. 2016, 15:01
par oktoberfest
Salut,

c'est un abus de langage car on désigne par 'fichier binaire' un fichier qui n'est pas un fichier texte (i.e. un fichier 'lisible' par un humain normal). Mais tout fichier n'est qu'une suite d'octets (une valeur valant entre 0 et 255). Via des tables de conversion (table ASCII par exemple) on a défini que 65 = A, 66 = B etc... et un éditeur (comme vim) utilise cette table de conversion pour t'afficher le contenu du fichier.

Re: [fichier binaire] (en cours)

Publié : ven. 29 avr. 2016, 18:36
par HS-157
Normalement, si tu ouvres un fichier binaire avec un éditeur hexadécimal,
Tu peux voir chaque octet sous sa forme hexadécimal.

Re: [fichier binaire] (en cours)

Publié : sam. 30 avr. 2016, 19:52
par Xorg
Ça ne présente pas vraiment d'intérêt d'essayer de lire un fichier binaire. On peut voir les instructions machines, mais ça ne sert quand dans certains cas spécifiques.
hexdump -C permet d'afficher la totalité du fichier en hexadécimal.
objdump -s -j .rodata est plus spécifique, ça affiche en hexadécimal la section qui contient en quelques sortes le cœur du programme.

Après, le fait d'afficher ça sous forme hexadécimal, c'est que c'est plus facile à lire. En binaire, il faut huit bits pour faire un octet, ce qui est représenté avec huit caractères (par exemple, 00000000), alors qu'en hexadécimal, un caractère représente quatre bits. C'est pour cela qu'il y a deux caractères hexadécimal par colonnes, pour former un octet.
C'est assez aisé de passer du binaire à l’hexadécimal et vice versa. 0000 en binaire équivaut à 0 en hexadécimal, 0001 à 1, 0010 à 2, 0011 à 3, [...], 1001 à 9, 1010 à A, [...] et 1111 à F.

Donc avec les commandes que j'ai mis, tu n'as pas des 0 et des 1, mais c'est tout comme, le contenu est là, mais c'est affiché en base 16 et non en base 2. :wink: