Conversion hexadécimal vers texte : table ASCII, dumps hexadécimaux et guide de programmation
Apprenez à convertir l'hexadécimal en texte avec l'encodage ASCII. Inclut une table ASCII hex complète, la lecture des dumps hexadécimaux, des exemples en Python et JavaScript, et les valeurs hex courantes à connaître.
Conversion hexadécimal vers texte : table ASCII, dumps hexadécimaux et guide de programmation
L'hexadécimal est la lingua franca de l'informatique bas niveau. Que vous déboguiez des paquets réseau, lisiez des dumps mémoire, inspectiez des en-têtes de fichiers ou travailliez avec des hachages cryptographiques, savoir convertir entre hexadécimal et texte lisible est une compétence essentielle.
Ce guide couvre tout ce qu'il faut savoir sur la conversion hexadécimal-vers-texte : comment ASCII et UTF-8 associent les caractères à des valeurs hex, comment lire les dumps hexadécimaux et comment réaliser les conversions en code. Essayez notre convertisseur hexadécimal vers texte gratuit pour suivre les exemples ci-dessous.
Comment l'hexadécimal représente le texte
Les ordinateurs stockent le texte sous forme de suites d'octets, chaque octet ayant une valeur numérique entre 0 et 255. L'hexadécimal (base 16) fournit une manière compacte d'exprimer ces valeurs d'octets avec exactement deux chiffres par octet (00 à FF).
La correspondance entre octets et caractères est définie par les encodages de caractères :
- ASCII : associe les valeurs 0-127 aux lettres anglaises, chiffres, signes de ponctuation et caractères de contrôle
- UTF-8 : étend ASCII pour couvrir tous les caractères Unicode (toutes les écritures, symboles et emoji)
Exemple : "Hello" en hexadécimal
| Caractère | Décimal ASCII | Valeur hex |
|---|---|---|
| H | 72 | 48 |
| e | 101 | 65 |
| l | 108 | 6C |
| l | 108 | 6C |
| o | 111 | 6F |
Donc "Hello" en hexadécimal est : 48 65 6C 6C 6F
Table ASCII hex complète
La norme ASCII définit 128 caractères (0-127). Voici les 95 caractères imprimables avec leurs valeurs hexadécimales, décimales et binaires :
Chiffres (0x30-0x39)
| Car | Hex | Déc | Binaire |
|---|---|---|---|
| 0 | 30 | 48 | 00110000 |
| 1 | 31 | 49 | 00110001 |
| 2 | 32 | 50 | 00110010 |
| 3 | 33 | 51 | 00110011 |
| 4 | 34 | 52 | 00110100 |
| 5 | 35 | 53 | 00110101 |
| 6 | 36 | 54 | 00110110 |
| 7 | 37 | 55 | 00110111 |
| 8 | 38 | 56 | 00111000 |
| 9 | 39 | 57 | 00111001 |
Lettres majuscules (0x41-0x5A)
| Car | Hex | Déc | Car | Hex | Déc | Car | Hex | Déc |
|---|---|---|---|---|---|---|---|---|
| A | 41 | 65 | J | 4A | 74 | S | 53 | 83 |
| B | 42 | 66 | K | 4B | 75 | T | 54 | 84 |
| C | 43 | 67 | L | 4C | 76 | U | 55 | 85 |
| D | 44 | 68 | M | 4D | 77 | V | 56 | 86 |
| E | 45 | 69 | N | 4E | 78 | W | 57 | 87 |
| F | 46 | 70 | O | 4F | 79 | X | 58 | 88 |
| G | 47 | 71 | P | 50 | 80 | Y | 59 | 89 |
| H | 48 | 72 | Q | 51 | 81 | Z | 5A | 90 |
| I | 49 | 73 | R | 52 | 82 |
Astuce : les lettres majuscules commencent à 0x41 (65). Les minuscules commencent à 0x61 (97). La différence est exactement 0x20 (32) : inverser le bit 5 change la casse.
Lettres minuscules (0x61-0x7A)
| Car | Hex | Déc | Car | Hex | Déc | Car | Hex | Déc |
|---|---|---|---|---|---|---|---|---|
| a | 61 | 97 | j | 6A | 106 | s | 73 | 115 |
| b | 62 | 98 | k | 6B | 107 | t | 74 | 116 |
| c | 63 | 99 | l | 6C | 108 | u | 75 | 117 |
| d | 64 | 100 | m | 6D | 109 | v | 76 | 118 |
| e | 65 | 101 | n | 6E | 110 | w | 77 | 119 |
| f | 66 | 102 | o | 6F | 111 | x | 78 | 120 |
| g | 67 | 103 | p | 70 | 112 | y | 79 | 121 |
| h | 68 | 104 | q | 71 | 113 | z | 7A | 122 |
| i | 69 | 105 | r | 72 | 114 |
Symboles courants (0x20-0x2F, 0x3A-0x40, 0x5B-0x60, 0x7B-0x7E)
| Car | Hex | Déc | Car | Hex | Déc | Car | Hex | Déc |
|---|---|---|---|---|---|---|---|---|
| (espace) | 20 | 32 | : | 3A | 58 | [ | 5B | 91 |
| ! | 21 | 33 | ; | 3B | 59 | \ | 5C | 92 |
| " | 22 | 34 | < | 3C | 60 | ] | 5D | 93 |
| # | 23 | 35 | = | 3D | 61 | ^ | 5E | 94 |
| $ | 24 | 36 | > | 3E | 62 | _ | 5F | 95 |
| % | 25 | 37 | ? | 3F | 63 | ` | 60 | 96 |
| & | 26 | 38 | @ | 40 | 64 | { | 7B | 123 |
| ' | 27 | 39 | } | 7D | ||||
| ( | 28 | 40 | ~ | 7E | 126 | |||
| ) | 29 | 41 | ||||||
| * | 2A | 42 | ||||||
| + | 2B | 43 | ||||||
| , | 2C | 44 | ||||||
| - | 2D | 45 | ||||||
| . | 2E | 46 | ||||||
| / | 2F | 47 |
Comment lire les dumps hexadécimaux
Un dump hexadécimal affiche le contenu d'un fichier ou d'une mémoire dans un format standardisé à trois colonnes :
Offset Hex bytes ASCII
00000000 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 0A 54 68 |Hello, World!.Th|
00000010 69 73 20 69 73 20 61 20 68 65 78 20 64 75 6D 70 |is is a hex dump|
00000020 20 65 78 61 6D 70 6C 65 2E 0A | example..|
Décomposition des colonnes
- Offset (à gauche) : adresse mémoire ou position dans le fichier en hexadécimal. Chaque ligne est espacée de 16 octets (0x10).
- Octets hex (au milieu) : 16 octets affichés comme paires hexadécimales, souvent séparés en deux groupes de 8.
- ASCII (à droite) : caractères imprimables affichés tels quels ; octets non imprimables affichés comme
.
Caractères de contrôle courants dans les dumps hexadécimaux
| Hex | Nom | Signification |
|---|---|---|
| 00 | NUL | Octet nul (terminateur de chaîne en C) |
| 0A | LF | Saut de ligne (nouvelle ligne Unix \n) |
| 0D | CR | Retour chariot (\r) |
| 0D 0A | CRLF | Nouvelle ligne Windows (\r\n) |
| 09 | TAB | Tabulation horizontale (\t) |
| 1B | ESC | Caractère d'échappement |
| 7F | DEL | Suppression |
Outils de dump hexadécimal en ligne de commande
# xxd (most common, comes with vim)
xxd file.bin
# hexdump with canonical format
hexdump -C file.bin
# od (octal dump, with hex output)
od -A x -t x1z file.bin
# Python one-liner
python3 -c "import sys; [print(f'{i:08x} {' '.join(f'{b:02x}' for b in chunk)}') for i, chunk in enumerate(iter(lambda: sys.stdin.buffer.read(16), b''), 0)]" < file.bin
Caractères UTF-8 multioctets
ASCII ne couvre que 128 caractères. Pour les textes internationaux, les emoji et les symboles, UTF-8 utilise 1 à 4 octets par caractère :
| Plage Unicode | Octets | Motif hex | Exemple |
|---|---|---|---|
| U+0000-U+007F | 1 octet | 0xxxxxxx | A = 41 |
| U+0080-U+07FF | 2 octets | 110xxxxx 10xxxxxx | é = C3 A9 |
| U+0800-U+FFFF | 3 octets | 1110xxxx 10xxxxxx 10xxxxxx | 中 = E4 B8 AD |
| U+10000-U+10FFFF | 4 octets | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx | 😀 = F0 9F 98 80 |
Comment identifier l'UTF-8 en hexadécimal
L'octet de tête indique combien d'octets le caractère utilise :
00-7F: un seul octet (ASCII)C0-DF: premier octet d'un caractère sur 2 octetsE0-EF: premier octet d'un caractère sur 3 octetsF0-F7: premier octet d'un caractère sur 4 octets80-BF: octet de continuation (ne commence jamais un caractère)
Conversion hexadécimal-vers-texte en programmation
Python
# Hex string to text
hex_string = "48 65 6C 6C 6F"
text = bytes.fromhex(hex_string.replace(" ", "")).decode("utf-8")
print(text) # "Hello"
# Text to hex string
text = "Hello"
hex_string = text.encode("utf-8").hex()
print(hex_string) # "48656c6c6f"
# With spaces between bytes
hex_spaced = " ".join(f"{b:02x}" for b in text.encode("utf-8"))
print(hex_spaced) # "48 65 6c 6c 6f"
JavaScript
// Hex string to text
const hexString = "48 65 6C 6C 6F";
const text = hexString.split(" ")
.map(byte => String.fromCharCode(parseInt(byte, 16)))
.join("");
console.log(text); // "Hello"
// Text to hex string
const toHex = str => [...str]
.map(c => c.charCodeAt(0).toString(16).padStart(2, "0"))
.join(" ");
console.log(toHex("Hello")); // "48 65 6c 6c 6f"
// Using TextEncoder for proper UTF-8
const encoder = new TextEncoder();
const bytes = encoder.encode("Hello 世界");
const hex = [...bytes].map(b => b.toString(16).padStart(2, "0")).join(" ");
Ligne de commande
# Text to hex
echo -n "Hello" | xxd -p # 48656c6c6f
echo -n "Hello" | od -An -tx1 | tr -d ' \n' # 48656c6c6f
# Hex to text
echo "48656c6c6f" | xxd -r -p # Hello
printf '\x48\x65\x6c\x6c\x6f' # Hello
Valeurs hex courantes que tout développeur devrait connaître
| Hex | Signification | Où vous les verrez |
|---|---|---|
FF FE | BOM UTF-16 LE | Début des fichiers UTF-16 |
FE FF | BOM UTF-16 BE | Début des fichiers UTF-16 |
EF BB BF | BOM UTF-8 | Début des fichiers UTF-8 (facultatif) |
89 50 4E 47 | En-tête de fichier PNG | Octets magiques .png |
FF D8 FF | En-tête de fichier JPEG | Octets magiques .jpg |
25 50 44 46 | En-tête de fichier PDF (%PDF) | Octets magiques .pdf |
50 4B 03 04 | En-tête de fichier ZIP | Octets magiques .zip, .docx, .jar |
7F 45 4C 46 | En-tête ELF | Exécutables Linux |
CA FE BA BE | Fichier de classe Java | Octets magiques .class |
DE AD BE EF | Marqueur de débogage | Constante magique/de débogage courante |
00 00 00 00 | Octets nuls | Mémoire non initialisée |
Ces "octets magiques" (signatures de fichiers), placés au début des fichiers, identifient le format du fichier indépendamment de son extension.
Hexadécimal vers texte ou hexadécimal vers décimal
Ce sont des opérations différentes que l'on confond souvent :
| Opération | Entrée | Sortie | Objectif |
|---|---|---|---|
| Hexadécimal vers texte | 48 65 6C 6C 6F | Hello | Recherche dans l'encodage de caractères |
| Hexadécimal vers décimal | FF | 255 | Conversion de base numérique |
| Hexadécimal vers binaire | A3 | 10100011 | Conversion de base numérique |
La conversion hexadécimal-vers-texte interprète chaque paire hexadécimale comme un encodage de caractère (ASCII/UTF-8). La conversion hexadécimal-vers-décimal convertit un nombre hexadécimal en base 10. Utilisez notre convertisseur hexadécimal vers décimal pour les conversions numériques ou notre convertisseur hexadécimal vers binaire pour les conversions binaires.
Foire aux questions
Comment savoir si une chaîne hexadécimale est du texte ou des données binaires ?
Regardez les valeurs des octets. Si la plupart des octets sont dans la plage ASCII imprimable (0x20-0x7E), il s'agit probablement de texte. Si vous voyez beaucoup de valeurs hors de cette plage (surtout 0x00, 0x80-0xFF), il s'agit probablement de données binaires. Les outils de dump hexadécimal affichent l'interprétation ASCII à côté des valeurs hex pour vous aider à repérer du texte dans les fichiers binaires.
Pourquoi certaines chaînes hexadécimales commencent-elles par 0x ?
Le préfixe 0x est une convention de programmation (utilisée en C, Java, Python, JavaScript) qui indique au compilateur ou à l'interpréteur que le nombre est hexadécimal, et non décimal. Il n'a aucun effet sur la valeur : 0x41 et 41 en hexadécimal désignent le même nombre. Lors d'une conversion hexadécimal-vers-texte, retirez les préfixes 0x avant le traitement.
Quelle est la différence entre big-endian et little-endian en hexadécimal ?
L'endianness affecte l'ordre des octets des valeurs multioctets (comme les entiers), pas les octets individuels. Le big-endian stocke l'octet le plus significatif en premier (0x00 0x01 = 1), tandis que le little-endian stocke l'octet le moins significatif en premier (0x01 0x00 = 1). L'encodage texte (ASCII/UTF-8) se lit toujours de gauche à droite, donc l'endianness n'affecte pas la conversion hexadécimal-vers-texte.
Prêt à convertir de l'hexadécimal ? Essayez notre convertisseur hexadécimal vers texte pour une conversion instantanée avec un tableau de décomposition des caractères. Pour les conversions liées, consultez notre convertisseur hexadécimal vers binaire, notre convertisseur hexadécimal vers décimal et notre traducteur binaire.