web-dev-qa-db-fra.com

Pourquoi les éditeurs hexadécimaux sont-ils appelés éditeurs binaires?

Hex et binary sont deux bases différentes. Hex, à mon sens, est simplement une version plus facile à utiliser et plus pratique du binaire.

Cependant, j'entends souvent dire que les éditeurs hexadécimaux sont des éditeurs binaires. Si vous recherchez "éditeur binaire" sur Google, vous obtenez des éditeurs hexadécimaux.

82
Joseph A.

Un éditeur binaire édite un fichier en tant que fichier binaire .

Fichier binaire - Wikipedia

Un fichier binaire est un fichier informatique qui n'est pas un fichier texte. Le terme "fichier binaire" est souvent utilisé comme un terme signifiant "fichier non-texte" [et] est généralement considéré comme une séquence d'octets. ... Les fichiers binaires contiennent généralement des octets destinés à être interprétés autrement que comme des caractères de texte.

Un éditeur hexadécimal est un type d’éditeur éditeur binaire dans lequel les données sont représentées dans hexadécimal .

Éditeur hexadécimal - Wikipedia

Un éditeur hexagonal (ou éditeur de fichiers binaires ou éditeur d'octets) est un type de programme informatique permettant de manipuler les données binaires fondamentales constituant un fichier informatique. . Le nom 'hex' vient de 'hexadécimal': une représentation standard pour les nombres ayant pour base 16.

185
Steven

La terminologie est difficile. Différentes personnes portent toutes sortes de noms différents.

Dans ce cas, il apparaît que le hex dans "éditeur hexadécimal" désigne la représentation conventionnelle lisible par l'homme de la valeur de chaque octet, alors que le binaire dans "éditeur binaire" désigne le notion que vous éditez effectivement le fichier au niveau de la couche d’octets (et les ordinateurs stockent les octets au format binaire), sans tenir compte du codage de texte de niveau supérieur, etc. Rappelez-vous que les fichiers qui ne sont pas facilement représentables sous forme de texte de niveau supérieur sont appelés "fichiers binaires" ou "fichiers binaires", pour la même raison.

Ni l'un ni l'autre n'est techniquement incorrect; ils viennent juste au problème de nommage sous des angles différents. Sur une note personnelle, cependant, j'aurais tendance à penser que "l'éditeur binaire" est globalement source de confusion.

85

Affichage de l'éditeur binaire (en binaire)

00000000 | 11111011 11111011 11111011 11111011 11110101 11111011 11111011 11111011
00001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00010000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00011000 | 11110101 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00100000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00101000 | 11111011 11111011 11101111 11111011 11111011 11111011 11111011 11111011
00110000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00111000 | 11111011 11111011 11111011 11101111 11111011 11111011 11111011 11111011
01000000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01010000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01011000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01100000 | 11111011 11111011 11111011 11111011 11111011 11101111 11111011 11111011
01101000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011

Affichage de l'éditeur binaire (en hexadécimal)

00 | fb fb fb fb f5 fb fb fb fb fb fb fb fb fb fb fb
10 | fb fb fb fb fb fb fb fb f5 fb fb fb fb fb fb fb 
20 | fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb fb 
30 | fb fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb 
40 | fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb 
50 | ef fb fb fb fb fb fb fb ef fb fb fb fb fb fb fb 
60 | fb fb fb fb fb ef fb fb fb fb fb fb fb fb fb fb

Il est vrai qu'un éditeur binaire devrait vous permettre de gérer les octets en binaire, mais comme vous pouvez le constater, la base 2 est trop petite pour donner des chiffres compacts.

Binaire comme brut, pas de base deux

De manière générale, alors " binary " dans éditeur binaire ne se réfère pas à la deuxième base, il s'agit en fait de l'antonyme de " éditeur de texte ".
La différence étant que les éditeurs de texte sont conçus pour afficher du texte. Par conséquent, les caractères non imprimables, les nouvelles lignes, les caractères de contrôle, les unités de code utf-8 non valides, etc. ne doivent pas être manipulés en toute sécurité.
Le simple fait d'ouvrir un fichier et de le sauvegarder immédiatement peut le modifier (en raison des conversions internes de l'éditeur, des échecs).

Les éditeurs binaires, dans l’autre sens, n’essayez pas de donner une sémantique aux données et de laisser l’utilisateur le traiter en toute sécurité comme un flux d’octets/bits/mots.

Editeurs hexadécimaux

L'éditeur binaire parfait connaissait tous les formats binaires possibles et vous permettait de l'éditer, mais puisque chacun peut créer son propre format binaire et qu'ils changent très souvent, il est vain d'essayer de prendre en charge tous les formats.
La meilleure chose qu'un éditeur puisse faire est de montrer les octets eux-mêmes et, en raison des propriétés déjà discutées de la base 16, les chiffres hexadécimaux sont très pratiques!

De plus, un utilisateur expérimenté peut traduire mentalement bin en hexagonal au fur et à mesure de sa lecture.
Définir/extraire un octet écrit en hexadécimal ne demande vraiment pas plus d'effort qu'un octet écrit en bin.
Pour être honnête, j'ai trouvé hex plus facile que binaire à lire.

56
Margaret Bloom

Pourquoi les éditeurs hexadécimaux sont-ils appelés éditeurs binaires?

Résumé:

Un éditeur hexadécimal permet d’éditer directement un fichier binaire en affichant le contenu binaire au format hexadécimal et en permettant de modifier ces nombres hexadécimaux.

Remarques:

  • Hex Editors permet d’éditer le contenu des données brutes d’un fichier au lieu d’autres programmes qui tentent d’interpréter les données.

  • Hex Editors, également appelés Editeurs binaires ou Editeurs d'octets.

  • Les appeler éditeurs binaires ou éditeurs d'octets n'est pas vraiment correct car les éditeurs modifient les nombres hexadécimaux et non les nombres binaires ou les octets (bien entendu, les nombres binaires et les octets sous-jacents changeront si le fichier est enregistré).

Pourquoi modifions-nous l'utilisation binaire en hexadécimal?

Il est plus facile de visualiser ou de modifier/modifier directement des fichiers binaires en affichant les données sous forme hexadécimale et en modifiant les valeurs hexadécimales.

  • Un moyen pratique de représenter des nombres binaires consiste à utiliser hexadécimal.

  • Historiquement, les ordinateurs étaient programmés en langage d'assemblage, où le code était écrit à l'aide d'instructions de processeur et de méta-instructions (connues sous le nom de directives, pseudo-instructions et pseudo-ops), de commentaires et de données.

    • Le code est traduit en binaire à l'aide d'un assembleur. Le code binaire peut ensuite être chargé dans un processus et exécuté.

    • Sans le code source, il est plus facile de modifier le programme directement à l'aide d'un éditeur affichant le programme au format hexadécimal plutôt que binaire.

  • Le code binaire est plus facilement lisible par les humains lorsqu'il est converti en hexadécimal.

    Par exemple, quelle paire de numéros est plus facile à mémoriser ou à lire à quelqu'un d'autre?

    10110000 01100001
    

    Ou

    B0 61
    
  • Chaque chiffre hexadécimal représente quatre chiffres binaires (bits). Un chiffre hexadécimal représente un quartet, qui correspond à la moitié d'un octet ou d'un octet (8 bits).

    Par exemple, les valeurs en octets peuvent aller de 0 à 255 (décimal), mais peuvent être représentées plus commodément par deux chiffres hexadécimaux dans la plage 00 à FF.

  • Le format hexadécimal est également couramment utilisé pour représenter les adresses de mémoire de l'ordinateur.

15
DavidPostill

Selon plusieurs conventions de langage de programmation et de système d'exploitation, il existe deux types de fichiers:

  • fichiers texte constitués d'une suite de lignes de texte, chaque ligne étant composée d'une suite de caractères imprimables (y compris des caractères de contrôle) et se terminant par une fin de ligne
  • fichiers binaires contenant une suite d'octets arbitraire, y compris l'octet nul, interdit dans un fichier texte.

Les éditeurs de texte peuvent ouvrir des fichiers texte tandis que les éditeurs binaires n’ont aucune restriction quant au type de fichier qu’ils traitent.

Le fait que les éditeurs binaires représentent et permettent souvent de saisir des données au format hexadécimal n’est qu’une commodité (ils affichent et permettent souvent de remplacer des caractères ascii), l’affichage des données uniquement en binaire pur rendrait les données moins lisibles.

Un éditeur binaire populaire s'appelle HexEdit .

 enter image description here

Il se considère à juste titre comme un éditeur binaire et un éditeur hexadécimal:

 enter image description here

Il y a même une option pour ne pas afficher les données en hexadécimal mais seulement le texte

 enter image description here

9
jlliagre

Quand les gens utilisent un hex, ils pensent généralement en binaire et l'utilisent comme une notation abrégée.

Seize est une puissance de 2. Huit est également une puissance de deux. Donc 16 et 8 ont été utilisés pour la notation abrégée de binaire. La conversion manuelle entre binaire et une base d'une puissance de deux est facile. Regroupez simplement les bits dans la taille indiquée par la base cible, puis utilisez le chiffre correspondant.

La base 8, octale, était populaire pour de nombreux ordinateurs anciens, raison pour laquelle Unix a une commande od octal dump. Chaque chiffre octal représente 3 bits à la fois. Mais cela n’était pas pratique pour les machines basées sur des octets de 8 bits.

Hexadécimal, hex abrégé, base 16, représente 4 bits par chiffre. Cette représentation est beaucoup plus utilisée de nos jours.

5
infixed

Les fichiers de la grande majorité, si ce n’est tout, des ordinateurs aujourd’hui sont en 8 bits bytes . C'est généralement l'abstraction avec laquelle on travaille lors de l'édition directe d'un fichier.

Bien sûr, il est possible d’éditer des bits individuels de données, mais pas souvent. Les opérations courantes au niveau des bits, telles que la définition du bit 7, sont néanmoins faciles à effectuer avec un fichier hexadécimal - 1000 0000base2 = 80base16donc si une valeur hexadécimale est inférieure à 80base2 le bit 7 est clair et ajoute 8base16 va le régler.

Les autres raisons pour lesquelles hex est plus fortement associé à ce type d'activité:

  • Les valeurs hexadécimales sont plus faciles à reconnaître lors de l'analyse visuelle de valeurs connues. Par exemple, 20base16 = 32 qui est un espace ASCII, mais la même valeur 0010 0000base2 n'est pas si facile à reconnaître en tant que tel parmi un flot d'autres valeurs déversées.

  • Les anciens systèmes sur lesquels vous aviez réellement besoin de l'utiliser régulièrement peuvent ne pas disposer de beaucoup d'espace à l'écran (par exemple, 40 colonnes). Le moniteur Apple IIe ROM en est un excellent exemple. Il peut vider la mémoire au format hexadécimal vers la vidéo intégrée à 40 colonnes et développer les valeurs en binaire sur un écran 80x24 vous permettra de sortir rapidement de la pièce. Pour ces anciens systèmes, il est également plus facile d'écrire des routines pour convertir les données entrées ASCII en valeurs correctes. Important, où 4 Ko de RAM étaient considérés comme une grande quantité de mémoire et où les systèmes n’avaient peut-être pas autant de mémoire ROM.

  • Le mot "hex" sonne mieux, est plus court et est plus facile à taper.

5
LawrenceC

Cela fait référence à la façon dont les ordinateurs stockent les informations.

Sur le niveau de base, les ordinateurs utilisent 0 et 1 pour représenter des données, ces bits sont appelés. Huit bits regroupés constituent un octet. La valeur hexadécimale est la base 16, ce qui signifie qu'elle comporte 16 caractères (0-9, A-F). Pour stocker un caractère, il faut 8 bits ou 1 octet.

Donc, un nombre hexadécimal 13 (19 en décimal) est identique à 0001 0011 en binaire. Il est plus facile de lire hex que binaire.

3
Burgi

Tout fichier exécutable compilé (comme somefile.exe, par exemple sous Windows) est parfois appelé "binaire", car il a été compilé dans un code au niveau de la machine qui est correct au niveau binaire et doit être exécuté directement par le processeur.

Donc, vous éditez un binaire. Il arrive juste d'être affiché en hex car hex est utile pour les humains.

2
Mike Gillis

Les premiers éditeurs binaires que je connais étaient aussi des désassembleurs. Cela signifie que la capacité d’édition est un sous-produit du désassemblage et de la correction d’un fichier binaire exécutable.

Hiew est un bon exemple d'application.

Le code assemblé (instructions d'assembleur) est souvent représenté sous forme de chaînes hexadécimales. Je pense que c'est là que la confusion moderne se pose. Les gens ne savent tout simplement pas à quoi ils ont affaire.

2
AnrDaemon

Je vais répondre à vos questions littéralement.

Tout d'abord, un peu de clarification. Vous voulez dire, bien sûr, un éditeur hexadécimal. Hex signifie 6 et décimal signifie 10, donc hexadécimal _ signifie 16. Bi signifie 2. Comme vous l'avez dit, il s'agit de deux bases différentes, la base 16 et la base 2, ce qui signifie qu'il faut 16 éléments fictifs pour définir un nombre hexadécimal et seulement 2 éléments pour définir un nombre binaire.

Vous avez dit que,

If you actually search for "binary editor" on Google, you get hex editors.

Et maintenant pour vos questions,

Why is that? 

Ceci est la partie littérale. Google renvoie ce que la plupart des gens ont pensé être des résultats satisfaisants de leurs recherches. Leurs algorithmes d'apprentissage automatique associent les chaînes "hexadécimale" et "hex" à "binaire" dans le contexte de la chaîne "éditeur". Comme la plupart des utilisateurs étaient satisfaits de "hex" "éditeur" après avoir recherché "binaire" "éditeur", c'est ce que nous obtenons. Cela n'a aucun sens autrement.

What is the connection?

Littéralement encore, il n'y en a pas puisque Google ne renvoie aucun sens. Google ne connaît pas la différence entre binaire et hexadécimal, il ne peut que tabuler la manière dont les gens utilisent leur moteur de recherche.

Si vous demandiez la connexion réelle entre hexadécimal et binaire, pour revenir à la clarification ci-dessus, un élément hexadécimal code 16 possibilités ou 4 bits, mais un élément binaire code 2 possibilités ou 1 bit. Pour encoder les 8 bits d'information dans un octet, nous avons besoin de 2 éléments hexadécimaux ou de 8 éléments binaires. Ainsi, vous pouvez voir que les éditeurs binaires ou hexadécimaux peuvent être utilisés de manière interchangeable car ils représentent les mêmes données, mais dans des vues différentes.

1
r3mnant

Ils sont appelés "binaires" car ils vous permettent de modifier des bits individuels.

L’interface utilisateur fonctionne généralement en mode hexadécimal par défaut, car c’est plus pratique - par exemple. ffffe0007d13e650 prend moins d'espace à l'écran que 1111111111111111111000000000000001111101000100111110011001010000. (C'est une adresse réelle provenant d'un problème de débogage, pas un exemple inventé.) Il est également plus facile de "voir" des éléments tels que des caractères ascii ou Unicode dans le code hexadécimal.

Mais la plupart d'entre eux passeront à vous montrer des bits binaires si vous le voulez vraiment.

(Pourquoi conduisons-nous sur la promenade mais garons-nous dans l'allée? Ce ne sont que des mots. L'anglais est souvent étrange.)

1
Jamie Hanrahan