# Fichier binaire

En informatique, un fichier binaire est un fichier qui n'est pas un fichier texte. De nombreux formats de fichiers binaires stockent une partie de leurs données sous forme de texte (une suite de caractères), le reste servant à interpréter, formater ou afficher ce texte.
Par extension de langage, on appelle « binaire » tout fichier qui n'est pas interprétable sous forme de texte : une image, un son ou encore un autre fichier compressé. C'est aussi un terme spécifique à l'informatique où l'on part d'un code source (texte) pour générer un logiciel sous forme de fichier exécutable (binaire).

## Structure

Un fichier binaire est formé d'une suite d'octets composés chacun de 8 bits. Chaque fichier est structuré selon un format spécifique permettant de l'interpréter : un fichier contenant un logiciel pourra être lancé par le système d'exploitation, une image pourra être affichée à l'écran.
Les fichiers binaires contiennent généralement un entête permettant d'identifier leur format. Cet entête commence par (ou contient) une suite de caractères textuels ou binaires identifiant de manière unique la structure des autres données. Cette suite est appelée « signature » ou « nombre magique ». Par exemple, le format d'image GIF, très utilisé dans les pages web, commence toujours par le texte « GIF87a » ou « GIF89a » selon la version du format.
Un fichier qui ne contient pas d'entête ou qui n'est pas identifiable est dit « brut ». Il est alors identifié par son extension et peut stocker des données dans un format propriétaire connu uniquement du logiciel originaire ou destinataire comme les données de capteurs : thermomètres, microphones, sismographes. L'extension « .bin » est souvent utilisée par défaut et ne détermine en aucune manière le contenu d'un tel fichier : il peut stocker pour un jeu vidéo toute une série d'éléments (images, sons) parfois compressés ou même chiffrés.
Les fichiers d'empreinte mémoire contiennent un instantané dont il n'est pas nécessaire de connaître la structure intrinsèque ou dont cette structure n'a aucune importance pour l'utilité finale du fichier (n'étant qu'une copie « telle quelle » des données à conserver/utiliser). C'est le cas, par exemple, des fichiers dits « ROM » destinés aux émulateurs matériels (typiquement, les fichiers contenant l'empreinte mémoire des cartouches électroniques des consoles de jeu vidéo et dédiés à des émulateurs logiciels fonctionnant sur ordinateur ou sur d'autres consoles de jeux vidéo).

## Fichiers et binaire

Par définition, un fichier est un conteneur d'informations (exemple : une fiche de bibliothèque, ou encore, un livre, etc.). Les applications technologiques contemporaines de l'informatique étant principalement basées sur celles de l'électronique, l'usage du système de numération binaire est actuellement majoritairement utilisé pour représenter (traiter, stocker, etc.) les informations au sein des fichiers informatiques. Autrement dit, actuellement, tout fichier informatique est, technologiquement, de nature binaire. Dit encore autrement : « tout fichier contemporain n'est qu'une succession de 1 et de 0 ».
Cette expression n'a donc de sens que pour relativiser deux notions distinctes des fichiers informatiques, car ce qui est intéressant dans l'information n'est pas sa nature (binaire ou autre) mais sa signification, son sens, la sémantique de cette information. C'est donc dans ce cadre qu'intervient cette expression.
Les informations de nature binaire sont généralement segmentées sous la forme de mots de longueur fixe appelés des bytes. Généralement, ces bytes ont une longueur de 8 bits et sont donc appelés des octets. Ainsi, les fichiers informatiques binaires ne sont qu'une succession de bytes, et, plus généralement, de bytes de 8 bits et donc, d'octets.
Tous les fichiers informatiques contemporains étant, par nature technique même, des fichiers binaires, le problème ici est de déterminer la signification de chacun de ces bits, de ces bytes, de ces octets.
C'est là qu'entre en jeu la notion d'interprétation : pour un humain ou pour un ordinateur. Les bits, en tant que tels, ne sont pas très expressifs pour les humains qui, eux, utilisent des glyphes (lettres) issus généralement d'un alphabet. C'est pourquoi, historiquement, dès l'avènement de l'ère de l'informatique, on a créé des tables d'association entre ces glyphes (dépendants de la langue, et donc, du pays) et les octets. Un standard issu de l'imprimerie et, plus particulièrement, des machines à écrire, s'est rapidement dégagé donnant ainsi naissance à la table des caractères ASCII.
Ainsi, à chaque octet correspond un caractère ASCII donné. À noter que sur les 256 caractères ASCII disponibles, les 32 premiers ne possèdent pas de glyphes associés et sont donc réservés à des fonctions spéciales dérivées du fonctionnement des machines à écrire à chariot de l'époque (telles que les désormais célèbres « retour chariot », « saut de ligne » ou la non moins célèbre « tabulation », etc.). À noter également que les 128 derniers caractères (c'est-à-dire la deuxième moitié de la table) sont réservés aux spécificités des dialectes nationaux. Pour des raisons historiques, les 128 premiers sont du type latin car anglophones et que, par conséquent, ce système a rapidement été confronté à ses limites intrinsèques et progressivement complété (mais pas remplacé : il existe toujours) par des systèmes plus modernes tel que, actuellement, l'Unicode.

### La problématique

Les données des fichiers informatiques actuels étant conservées sous une forme binaire, le premier problème réside dans la forme que doivent revêtir ces données afin d'être représentées à un utilisateur humain désireux de consulter un fichier donné.
La représentation des données dépend, naturellement, de leur nature, non pas physique (ici, binaire), mais de leur nature sémantique. Ainsi, si les données du fichier (c'est-à-dire les suites de bits, de bytes, d'octets) sont de nature textuelle, il faudra les présenter à l'utilisateur humain sous la forme de caractères d'écriture. Si elles sont de nature graphique, sous la forme de graphismes, si de nature audiophonique, sous la forme d'ondes sonores, etc.
Le problème se reporte donc vers le dispositif chargé de présenter à un utilisateur humain les informations contenues dans un fichier un informatique. Or, par défaut, on considère ici implicitement que les fichiers doivent pouvoir être présentés sous la forme de caractères d'imprimerie (via la table de correspondance ASCII).
Le problème est que, par exemple, un fichier contenant des informations audio, une fois ces informations affichées à l'utilisateur sous la forme de chiffres (ou autre, mais pas sous leur forme dédiée d'ondes sonores), ces informations n'auront pas beaucoup de sens, de signification pratique, pour l'utilisateur humain, car il nous est bien difficile de procéder à l'opération inverse (c'est-à-dire transformer, par l'esprit, une suite de nombres lues en une symphonie harmonieuse).
La première distinction faite par l'usage de cette expression concerne donc les fichiers qui, une fois convertis en glyphes, ont une signification pour un utilisateur humain, des fichiers qui, une fois convertis par le même procédé, ne revêtent aucune signification particulière pour un utilisateur humain.
Un fichier binaire est un contenant des données sous forme d'octets qui n'ont donc de sens que pour le logiciel qui les utilise (et non pour les utilisateurs finaux). Si par stricte définition tout fichier est binaire, l'usage veut que l'on qualifie un fichier de binaire pour indiquer qu'il ne s'agit pas d'un fichier texte. Ces fichiers peuvent être ouverts par des éditeurs de texte (déconseillé aux utilisateurs non expérimentés), mais les données y seront mal représentées et surtout, incompréhensibles.
(La plupart des fichiers existants sont des fichiers binaires, il s'agit notamment des fichiers contenant du son, de la vidéo, des images, du langage machine, des empreintes mémoire, etc.).
Pour décrire l'organisation des données dans ce fichier, on parle de format de fichier.

## Évolution sémantique

Au début des années 1980, les formats de fichiers binaires se systématisent dans les environnements micro-informatiques, où l'encombrement mémoire est critique. En effet, un format binaire est souvent plus compact qu'un format de fichier texte (il occupe moins d'espace dans la mémoire vive et sur le périphérique de stockage). L'encombrement mémoire n'est pas suffisant à lui seul pour expliquer ce foisonnement.

## Fichiers propriétaires

Un format de fichier binaire peut être libre (exemple le format de fichier de Gimp XCF). S'il ne l'est pas, il est nécessaire de lui appliquer des méthodes d'ingénierie inverse, ce qui en ralentit la compréhension. Par son format de fichier binaire tenu secret (format fermé), un éditeur de logiciels propriétaires peut garder la mainmise sur ses clients en limitant l'interopérabilité de ses fichiers, car il est peu probable que ses concurrents réussissent à réaliser un logiciel équivalent qui exploiterait son format de fichier binaire aussi bien que son propre logiciel.
Sous les systèmes d'exploitation de type Unix, en revanche, la culture était beaucoup plus orientée vers des formats en texte brut. Ceci reste vrai : les fichiers de configurations, notamment, sont quasi-systématiquement lisibles par n'importe quel éditeur de texte.
Les fichiers binaires les plus courants sont les fichiers d'images, les formats propriétaires des logiciels de bureautique (traitements de texte, tableurs…) et les applications compilées.

## Fichiers binaires et programmes

Sur les machines 8 bits, un fichier binaire est souvent un programme compilé, écrit le plus souvent en assembleur pour gagner de la place. L'en-tête du fichier indiquait l'adresse du début d'emplacement en mémoire ainsi qu'une adresse d'exécution.

## Visualisation

Pour visualiser correctement le contenu des fichiers binaires, il est préférable d'utiliser un éditeur hexadécimal. Ces éditeurs peuvent convertir chaque octet sous la forme de nombres hexadécimaux et de caractères ASCII. L'utilisation d'éditeurs dits « de texte brut » (utilisant donc les 256 caractères ASCII de l'ordinateur — selon le pays et la police d'écriture utilisée) n'est pas recommandée car ils ne sont pas adaptés. En effet, ils seront lents, ne pourront parfois ouvrir que des fichiers d'une taille limitée, et interpréteront les 32 premiers octets comme des caractères ASCII (qui sont spéciaux et agissent sur le texte lui-même). Par exemple, l'octet 13 sera interprété par l'éditeur comme une tabulation, l'octet 0 ne sera sans doute pas affiché ou bloquera l'affichage de la suite du fichier…
Si la visualisation est possible via des éditeurs hexadécimaux, la modification des fichiers binaires par ce biais est à proscrire du fait qu'ils peuvent affecter en profondeur le fonctionnement du logiciel qui les utilise (ou du logiciel lui-même lorsqu'il s'agit de fichier dits « exécutables »). La plupart du temps, le fichier sera reconnu par les logiciels comme étant corrompu du fait de méthodes de sécurité (telles que des bits de parité positionnés à la fin de blocs logiques) implémentés par le format utilisé.