Convertisseur texte vers binaire
Traduisez du texte en binaire — ses octets UTF-8, huit chiffres chacun — et du binaire en texte, avec la ligne et la colonne d’un caractère intrus.
01000010 01101111 01101110 01101010 01101111 01110101 01110010
Comment un texte devient des uns et des zéros
Un ordinateur conserve le texte sous forme d’octets, et un octet, ce sont huit bits, chacun valant 0 ou 1. Cette page vous montre ces octets : saisissez un texte et chaque octet en sort sous la forme de huit chiffres binaires, avec une espace entre un octet et le suivant, ou collez du binaire et lisez le texte qu’il forme. Elle fonctionne dans les deux sens, s’exécute entièrement dans votre navigateur et s’ouvre sur un exemple déjà converti.
Les octets qui composent un texte dépendent de son encodage, et ici c’est l’UTF-8, à moins que vous n’en choisissiez un autre, parce que l’UTF-8 est ce que contiennent les pages web, les URL et la plupart des fichiers texte. Le sélecteur « Unité » décide de ce que représente un groupe de chiffres : un octet d’UTF-8, un octet d’UTF-16 dans l’un ou l’autre ordre des octets, ou un point de code. L’unité que vous choisissez vaut dans les deux sens, et la page ne la change jamais à votre place. Quand ce que vous collez ressemble à une autre unité, la page le dit et place un bouton à côté de l’avis, et rien ne bascule tant que vous n’appuyez pas dessus.
Pourquoi chaque octet s’écrit avec huit chiffres
Un bit est un chiffre binaire, et un octet en compte huit. Huit bits peuvent se combiner de 256 façons, si bien qu’un octet contient un nombre entier de 0, soit 00000000, à 255, soit 11111111. C’est en octets que se comptent les fichiers, la mémoire et les réseaux ; l’anglais les appelle « bytes », et sur toute machine que vous risquez de croiser, un byte fait huit bits. Les normes réseau disent « octet », un mot qui ne peut vouloir dire que huit, et c’est celui que le français emploie.
Les 128 premières de ces valeurs sont l’ASCII, le code des lettres de l’alphabet anglais, des chiffres et de la ponctuation courante, et 128 valeurs n’ont besoin que de sept bits. L’octet de chaque caractère ASCII commence donc par un 0, et l’UTF-8 réserve les octets qui commencent par un 1 à tout ce que l’ASCII n’a pas. La page écrit chaque octet avec ses huit chiffres, zéros initiaux compris, pour une raison pratique aussi : des octets d’une largeur fixe peuvent se relire sans espace entre eux, huit chiffres à la fois.
La lettre H, bit par bit
Prenez un H majuscule. L’ASCII lui attribue le numéro 72, et 72 sous forme d’octet s’écrit 01001000. Lues depuis la gauche, les huit positions valent 128, 64, 32, 16, 8, 4, 2 et 1, et chaque 1 fait compter sa position : cet octet a ses uns aux positions qui valent 64 et 8, et 64 et 8 font 72. Un i minuscule vaut 105, soit 64, 32, 8 et 1, si bien que Hi donne 01001000 01101001.
La casse, c’est un bit. Un h minuscule s’écrit 01101000 : c’est l’octet de H avec la position qui vaut 32 passée à 1, et il en va de même pour toutes les lettres de l’alphabet anglais, parce que l’ASCII numérote chaque minuscule exactement 32 au-dessus de sa majuscule.
Le sélecteur « Base » écrit le même octet autrement, sans le changer. Avec « Décimal », H vaut 72 ; avec « Hexadécimal », 48 ; avec « Octal », 110. C’est un même octet écrit de quatre façons, et la lecture reprend les chiffres dans la base que vous avez choisie, quelle qu’elle soit. Le Convertisseur texte vers hexadécimal s’ouvre sur « Hexadécimal », où un octet prend deux chiffres au lieu de huit.
Pourquoi une lettre au-delà de l’ASCII prend deux octets ou plus
L’ASCII s’arrête à 127. Une lettre accentuée, une lettre de l’alphabet cyrillique, hébreu ou arabe, un caractère japonais ou coréen et un émoji ont tous des points de code au-delà, et l’UTF-8 n’écrit un caractère sur un seul octet que s’il est ASCII, réservant les octets qui commencent par un 1 à tout le reste. Chacun d’eux prend donc deux, trois ou quatre octets, et c’est en binaire que vous pouvez voir cela se produire, parce que les premiers bits de chaque octet indiquent quelle partie d’un caractère représente cet octet :
- 0xxxxxxx est un caractère sur un octet : l’ASCII, ses sept bits écrits à la place des x. H s’écrit 01001000.
- 110xxxxx 10xxxxxx est un caractère sur deux octets, pour les points de code jusqu’à 2 047, ce qui couvre les lettres accentuées des langues européennes et les alphabets cyrillique, hébreu et arabe. é s’écrit 11000011 10101001 et א, 11010111 10010000.
- 1110xxxx 10xxxxxx 10xxxxxx fait trois octets, pour les points de code jusqu’à 65 535, là où se trouvent les kana japonais et les kanji courants, le hangul coréen et le signe euro. € s’écrit 11100010 10000010 10101100.
- 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx fait quatre octets, pour tous les points de code au-delà, et c’est là que se trouvent la plupart des émojis.
Un premier octet qui commence par deux, trois ou quatre uns dit combien d’octets compte son caractère, et chaque octet qui prolonge un caractère commence par 10, si bien qu’aucun octet pris au milieu d’un caractère ne peut passer pour le début d’un caractère. Retirez des deux octets de א leurs marqueurs, le 110 et le 10, et les onze bits qui restent, 10111010000, sont son point de code, U+05D0, en binaire. Avec « Hexadécimal », les deux mêmes octets se lisent D7 90, et le motif se fond dans les chiffres ; en binaire, il se tient dans les premiers bits de chaque octet.
Quatre octets pour un émoji
😀 est U+1F600, bien au-delà de 65 535 : l’UTF-8 l’écrit donc sur quatre octets, 11110000 10011111 10011000 10000000. Le premier commence par quatre uns, il ouvre donc un caractère de quatre octets, et chacun des trois suivants commence par 10. Son point de code occupe dix-sept chiffres binaires, 11111011000000000, un de plus que les seize qu’un caractère de trois octets peut loger ; le motif à quatre octets a de la place pour vingt et un.
Un émoji qui a l’air d’un symbole unique peut compter plusieurs points de code, et chacun d’eux est écrit en entier. Une main qui salue avec une couleur de peau, c’est deux points de code et huit octets. Une famille de quatre, c’est sept points de code, quatre personnes et les trois liaisons invisibles entre elles, et vingt-cinq octets. Collez-en un dans la page et comptez les groupes.
Pourquoi un autre convertisseur affiche onze chiffres pour א
Un convertisseur qui affiche onze chiffres pour א, 10111010000, n’a pas écrit ses octets. Il a écrit le numéro qu’Unicode donne à la lettre, son point de code U+05D0, soit 1488, sous la forme d’un seul nombre binaire, et ce nombre n’est un octet de rien de ce que contient un fichier ou un réseau. Un message écrit de cette façon ne peut être relu que par un lecteur qui fait la même hypothèse.
Les deux réponses sont plus proches qu’il n’y paraît. Les onze chiffres sont exactement les bits que l’UTF-8 répartit sur ses deux octets une fois les marqueurs retirés, comme on l’a montré plus haut ; les deux convertisseurs écrivent donc le même nombre, et un seul des deux écrit les octets qui le stockent. Sur un caractère ASCII, les deux s’accordent, aux zéros initiaux près, ce qui explique qu’ils donnent la même réponse pour de l’anglais ordinaire et divergent sur presque tout le reste.
Cette page donne aussi cette réponse, comme une unité que vous choisissez et non comme une unité que la page suppose : prenez « Points de code » et א s’écrit 10111010000, et se relit de la même façon. Collez, alors que l’UTF-8 est choisi, un message qu’un convertisseur de points de code a écrit en hébreu, en russe ou en japonais, et les groupes sont trop larges pour des octets ; la page ne devine pas, mais dit que les groupes ressemblent à des points de code et propose « Passer aux points de code ». Un convertisseur qui traite une unité de code UTF-16 à la fois, comme le fait charCodeAt en JavaScript, écrit 😀 sous la forme de deux nombres de seize chiffres, les deux moitiés de la paire de substitution sous laquelle l’UTF-16 le stocke, et « Points de code » relit la paire comme un seul émoji.
Relire du binaire en texte
Pour refaire du texte à partir du binaire, réglez le sens sur « Binaire vers texte » et saisissez ou collez les chiffres : la sortie est le texte qu’ils forment. « Utiliser comme entrée » le fait en un clic, en faisant de la sortie l’entrée et en inversant le sens, ce qui est le moyen le plus rapide de vérifier un aller-retour. Toutes ces formes se lisent comme les mêmes octets :
- Les caractères d’espacement de toute sorte, sauts de ligne compris, et les virgules, points-virgules, deux-points ou traits d’union entre les octets.
- Aucun séparateur, partout où les chiffres se découpent en octets entiers de huit : c’est ainsi que les écrit « Compact » sous « Style ».
- Des groupes de sept chiffres ou moins, l’allure qu’a un caractère ASCII privé de son zéro initial : 1001000 1101001 se lit Hi.
- Un 0b devant un octet, dans l’une ou l’autre casse, et une paire de crochets, d’accolades, de parenthèses ou de guillemets autour de l’ensemble.
La page ne devine pas pour autant. Tout autre caractère, ou un groupe de plus de huit chiffres qui ne se découpe pas en octets entiers, arrête la lecture, et la page le signale avec la ligne et la colonne où il se trouve, votre propre ligne affichée en dessous avec l’endroit marqué. Dans un long message, c’est la différence entre une faute de frappe que vous pouvez retrouver et un texte faux sans que rien ne le dise.
Du binaire qui se lit proprement en octets mais qui n’est pas du texte UTF-8 est affiché plutôt que refusé. Un message coupé au milieu d’un caractère revient avec la séquence brisée affichée comme U+FFFD, le caractère de remplacement, et un avis sous la sortie dit combien il y a de telles séquences et où commence la première : l’octet, les chiffres que vous avez collés pour lui, et leur ligne et leur colonne.
Le binaire d’un texte, et le binaire d’un nombre
Saisissez 5 ici et la réponse est 00110101, pas 101. La page écrit le caractère 5, que l’ASCII numérote 53, parce que les chiffres d’un texte sont les octets qui le stockent ; 101 est le nombre cinq écrit en binaire, ce qui est une autre question avec une autre réponse. Il en va de même pour 255 : saisi ici, c’est trois caractères et trois octets, alors que le nombre 255 tient en un seul octet, 11111111.
Quand ce que vous avez est un nombre plutôt qu’un texte, comme un décompte, un registre ou une valeur qu’un programme a affichée, c’est au Convertisseur de bases qu’il faut l’apporter : il convertit la valeur elle-même entre le binaire, l’octal, le décimal, l’hexadécimal et d’autres bases, et, sur une largeur fixe, il écrit une valeur négative en complément à deux et affiche chaque bit comme un bit que vous pouvez inverser d’un clic. Cette page part des caractères d’un texte ; celle-là part d’un nombre.
Questions fréquentes
- Comment écrire mon nom en binaire ?
- Tapez-le dans le champ de saisie : il en sort octet par octet, huit chiffres par octet et une espace entre les octets. Ada, par exemple, s’écrit 01000001 01100100 01100001. Une lettre accentuée, ou une lettre d’un autre alphabet, prend deux octets ou plus, et une espace entre deux noms est un octet à part entière, 00100000.
- Combien de bits prend un caractère ?
- En UTF-8, huit pour une lettre, un chiffre ou un signe de ponctuation ASCII, seize pour une lettre accentuée ou une lettre cyrillique, hébraïque ou arabe, vingt-quatre pour les kana japonais, les kanji courants, le hangul coréen et le signe euro, et trente-deux pour la plupart des émojis. Ce que vous voyez comme un symbole peut être fait, en dessous, de plusieurs points de code, et chacun d’eux prend ses propres bits.
- Puis-je coller du binaire sans espace entre les octets ?
- Oui, partout où les chiffres se découpent en octets entiers : seize chiffres font deux octets, et vingt-quatre en font trois. Un groupe de plus de huit chiffres dont la longueur n’est pas un multiple de huit ne peut pas être découpé sans deviner quel octet a perdu un chiffre ; il est donc refusé à sa ligne et à sa colonne au lieu d’être mal lu.
- Pourquoi mon texte revient-il avec un point d’interrogation dans un losange ?
- Ce symbole est U+FFFD, le caractère de remplacement, que la page place partout où les octets ne sont pas du texte UTF-8 : le plus souvent, un octet s’est perdu et un caractère a été coupé, ou bien les octets n’ont jamais été de l’UTF-8. Plutôt que de refuser tout le message, la page affiche ainsi chaque séquence brisée et indique sous la sortie combien il y en a et où commence la première, pour que vous puissiez retrouver les dégâts dans ce que vous avez collé.
- Pourquoi un autre convertisseur me donne-t-il un binaire différent ?
- Très probablement parce qu’il écrit le point de code de chaque caractère plutôt que ses octets. Les deux s’accordent sur l’ASCII, aux zéros initiaux près, et divergent au-delà : א s’écrit 11010111 10010000 ici et 10111010000 là-bas. Choisissez « Points de code » pour obtenir la réponse de ce convertisseur, ou pour relire un message qu’il a écrit.
- Pourquoi 5 ne donne-t-il pas 101 ici ?
- Parce qu’un 5 saisi dans le champ est un caractère, et que la page écrit l’octet qui le stocke, 00110101. Le nombre cinq s’écrit 101 en binaire ; pour un nombre plutôt qu’un texte, utilisez le Convertisseur de bases.
- Mon texte est-il envoyé à un serveur ?
- Non. Les deux sens s’exécutent entièrement dans votre navigateur : le texte que vous saisissez et le binaire que vous collez ne quittent jamais votre appareil.
Outils connexes
- Convertisseur de bases
Saisissez 5 sur cette page et vous obtenez l’octet qui stocke le caractère 5, 00110101. Cette page-là sert à un nombre plutôt qu’à un texte : elle convertit la valeur elle-même, si bien que cinq y devient 101.
- Convertisseur texte vers hexadécimal
L’hexadécimal écrit un octet en deux chiffres là où le binaire en prend huit — Hi vaut 01001000 01101001 ici et 48 69 là-bas —, et c’est ainsi qu’un vidage montre les octets et que le code les écrit. Cette page propose aussi l’hexadécimal, et celle-là s’ouvre dessus.
- Base64
Encode et décode le Base64 — prise en charge complète de l’UTF-8.
- Encodeur / décodeur d’URL
Encode en pourcent une valeur ou une URL entière, et inversement.