[fichier binaire] (en cours)

Applications, problèmes de configuration réseau
AchilleFraisse
Elfe
Messages : 618
Inscription : dim. 27 avr. 2014, 09:32

[fichier binaire] (en cours)

Message 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 ?
oktoberfest
Maître du Kyudo
Messages : 1855
Inscription : mer. 06 janv. 2010, 13:51
Localisation : Ried - Alsace - France

Re: [fichier binaire] (en cours)

Message 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.
La majorité des bugs se situe entre la chaise et le clavier...
Arrêtez de vous prendre la tête avec les partitions... passez au LVM
Avatar de l’utilisateur
HS-157
Hankyu
Messages : 46
Inscription : ven. 22 mai 2015, 06:52

Re: [fichier binaire] (en cours)

Message 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.
Avatar de l’utilisateur
Xorg
Maître du Kyudo
Messages : 1933
Inscription : dim. 22 janv. 2012, 19:25
Localisation : Entre le clavier et la chaise.

Re: [fichier binaire] (en cours)

Message 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:
Arch Linux x86_64 - Sway
AMD Ryzen 5 3600X - 32 Go de DDR4 - SSD NVMe 1 To + SSD SATA 250 Go - Sapphire NITRO+ Radeon RX 580
Image AUR___Image Wiki___Image GitHub
Répondre