Que donne 48 65 6C 6C 6F en texte ?
Hello En ASCII et en UTF-8, 48 est H, 65 est e, 6C est l et 6F est o.
Convertissez l'hexadécimal en texte et le texte en hex. Collez l'hex sous toute forme — espacé, 0x, \x, sortie xxd ou hexdump, tableau d'octets Java ou C : ASCII, UTF-8, GBK ou UTF-16 est détecté. Dans votre navigateur.
Lu comme hex brut · 13 octets
Hello, 世界
UTF-8 détecté automatiquement : chaque séquence multi-octets est bien formée.
Le résultat est lui-même de l'hex — il a probablement été converti deux fois. Un passage de plus donne :
| Encodage | Lecture |
|---|---|
| UTF-8 Décodage propre | Hello, 世界 |
| GBK / GB18030 Décodage propre | Hello, 涓栫晫 |
| UTF-16LE Octets non décodables | 效汬Ɐ隸闧� |
| UTF-16BE Octets non décodables | 䡥汬漬⃤뢖� |
| ISO-8859-1 Décodage propre | Hello, ä¸<96>ç<95><8C> |
48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C
Rédigé et relu par les développeurs qui conçoivent les utilitaires d'encodage de Go Tools. Chaque valeur hex et chaque sortie citées sur cette page sont produites par le moteur de la page lui-même et vérifiées par des tests automatisés.
Hello En ASCII et en UTF-8, 48 est H, 65 est e, 6C est l et 6F est o.
En général 3 octets en UTF-8, 2 en GBK 你 s'écrit E4 BD A0 en UTF-8 et C4 E3 en GBK.
CR LF (\r\n) Un retour chariot suivi d'un saut de ligne — la fin de ligne utilisée par Windows, HTTP et la plupart des jeux de commandes série.
41 Le a minuscule vaut 61 ; les deux casses diffèrent toujours de 20.
L'hexadécimal est une façon d'écrire des octets : chaque octet, de 0 à 255, s'écrit avec deux chiffres, de 00 à FF. Convertir de l'hex en texte, c'est retransformer ces octets en texte lisible, et cela implique toujours de choisir un encodage de caractères — la table qui indique quel octet, ou quelle séquence d'octets, représente quel caractère.
Pour un texte en anglais, ce choix se voit rarement, car ASCII, UTF-8, GBK et la plupart des autres encodages s'accordent sur les octets 00 à 7F. Avec tout le reste, il se voit immédiatement. Les octets C4 E3 BA C3 sont 你好 en GBK et invalides en UTF-8, tandis que 你好 en UTF-8 s'écrit E4 BD A0 E5 A5 BD. L'hex ne porte que la moitié de l'information ; l'encodage est l'autre moitié.
Convertir du texte en hex, c'est l'opération inverse : encoder le texte en octets, puis écrire chaque octet avec deux chiffres hex. Les développeurs s'en servent pour voir exactement ce qui passe sur une liaison série ou ce qui entre dans une colonne de base de données, pour insérer des données binaires dans du code source et pour comparer ce que deux systèmes ont réellement envoyé.
$ echo 48656c6c6f | xxd -r -p
Hello
>>> bytes.fromhex('c4e3bac3').decode('gbk')
'你好'
>>> bytes.fromhex('c4e3bac3').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte Espacé, compact, séparé par des deux-points ou des tirets, valeurs 0x, échappements \x, encodage %, tableaux C, Go et Java, sortie signée de Arrays.toString en Java, littéraux bytes Python, Buffers Node.js, et écrans complets de xxd, hexdump -C et od. La page indique ce qu'elle a reconnu et ce qu'elle a retiré.
La détection automatique cherche une marque d'ordre des octets, de l'UTF-8 bien formé, de l'UTF-16, de l'ASCII pur, puis du GBK, et indique quelle règle a tranché. GBK n'est retenu que si les octets se lisent comme des caractères chinois courants : les trames binaires courtes sont signalées comme n'étant probablement pas du texte, au lieu d'être rendues en chinois absurde.
Les mêmes octets sont affichés en UTF-8, GBK, UTF-16LE, UTF-16BE et ISO-8859-1, chacun marqué comme décodé proprement ou non. Quand le texte sort illisible, la bonne lecture se trouve généralement une ligne plus bas.
NUL, CR, LF, ESC et les autres octets de contrôle sont affichés ␀ ␍ ␊ ␛ : un 00 final ou un 0D manquant dans des données de protocole saute aux yeux. La copie donne toujours les vrais caractères.
Texte → Hex produit de l'hex espacé ou compact, des listes 0x, des échappements \x, un tableau C façon xxd -i, un byte[] Java aux valeurs signées, un littéral bytes Python identique à repr(), un []byte Go ou un dump xxd — et la page sait relire chacun d'eux.
L'analyse et le décodage s'exécutent localement en JavaScript. Rien n'est envoyé, stocké ni placé dans l'URL : vous pouvez coller sans crainte des captures réseau et des logs de production.
bytes.fromhex(h).decode() bytes.fromhex('48 65 6c 6c 6f').decode('utf-8') renvoie 'Hello' ; les espaces entre octets sont acceptés, un préfixe 0x ne l'est pas. L'inverse est s.encode('utf-8').hex(), ou .hex(' ') pour une sortie espacée. Passez 'gbk' pour décoder ou encoder du texte chinois en GBK.
Buffer.from(h, 'hex') Buffer.from(h, 'hex').toString('utf8') décode, Buffer.from(s, 'utf8').toString('hex') encode. Une entrée invalide ne provoque pas d'erreur : le décodage s'arrête à la première paire invalide et un dernier chiffre isolé est ignoré, validez donc l'entrée d'abord.
TextDecoder / TextEncoder Convertissez les paires avec parseInt(pair, 16) dans un Uint8Array, puis appelez new TextDecoder('utf-8').decode(bytes). TextDecoder lit aussi 'gbk', 'big5' et 'shift_jis', mais TextEncoder ne produit que de l'UTF-8.
HexFormat.of() new String(HexFormat.of().parseHex(h), StandardCharsets.UTF_8) décode et HexFormat.of().formatHex(s.getBytes(StandardCharsets.UTF_8)) encode. Sur les versions antérieures, formatez chaque octet avec String.format("%02x", b) ; évitez Integer.toHexString(b), qui affiche ffffffe4 pour les octets négatifs.
encoding/hex hex.DecodeString(h) renvoie les octets et string(b) en fait une chaîne ; hex.EncodeToString([]byte(s)) fait l'inverse. Le paquet est strict : des espaces renvoient invalid byte: U+0020 ' ' et une longueur impaire renvoie odd length hex string.
sscanf with %2hhx Parcourez la chaîne deux chiffres à la fois vers un tampon unsigned char et ajoutez un '\0' final. Pour afficher de l'hex, castez en unsigned char et utilisez %02X ; sinon, là où char est signé, les octets au-dessus de 0x7F peuvent s'afficher FFFFFFE4.
hex2bin() / bin2hex() hex2bin('48656c6c6f') renvoie Hello et bin2hex('Hello') renvoie 48656c6c6f. Le manuel indique que hex2bin() renvoie false avec un E_WARNING pour une entrée de longueur impaire ou invalide.
xxd -r -p / xxd -p echo 48656c6c6f | xxd -r -p affiche Hello, et printf 'Hello' | xxd -p affiche 48656c6c6f. Pour encoder, utilisez printf plutôt que echo, car echo ajoute un saut de ligne final, 0a.
Convert.FromHexString() Encoding.UTF8.GetString(Convert.FromHexString(h)) décode et Convert.ToHexString(Encoding.UTF8.GetBytes(s)) encode (en majuscules, sans séparateurs). FromHexString refuse les espaces et le préfixe 0x. .NET Core et .NET 5+ sont livrés sans GBK : appelez d'abord Encoding.RegisterProvider(CodePagesEncodingProvider.Instance), puis Encoding.GetEncoding(936).
48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C
Hello, 世界
Les sept premiers octets sont de l'ASCII pur : 48 65 6C 6C 6F donne Hello, 2C est une virgule et 20 un espace. E4 B8 96 et E7 95 8C sont des séquences UTF-8 de trois octets pour 世 et 界 — la plupart des caractères chinois occupent trois octets en UTF-8. Comme chaque séquence est bien formée, la détection automatique lit l'ensemble comme de l'UTF-8.
CE C2 B6 C8 3A 32 35 2E 33 A1 E6
温度:25.3℃
Beaucoup de périphériques série envoient le texte chinois en GBK. Ici, CE C2 est 温 et B6 C8 est 度, 3A 32 35 2E 33 est l'ASCII :25.3, et A1 E6 est le signe ℃ pleine chasse — deux octets par caractère chinois ou symbole. Lus comme de l'UTF-8, ces octets sont invalides (CE ouvre une séquence de deux octets, mais C2 n'est pas un octet de continuation) ; lus comme du GBK, ce sont des caractères courants, donc la détection automatique choisit GBK. Un convertisseur qui ne connaît que l'UTF-8 affiche ici des caractères de remplacement.
00000000: 4869 20e4 bda0 e5a5 bd0d 0a Hi ........
Hi 你好␍␊
C'est exactement ce qu'affiche printf 'Hi 你好\r\n' | xxd. L'offset 00000000: et la colonne de caractères à droite sont retirés avant le décodage ; s'ils étaient lus comme des données, les huit zéros à eux seuls deviendraient quatre octets NUL au début. Les deux derniers octets, 0d 0a, sont un saut de ligne Windows, affiché ␍␊.
[-28, -72, -83, -26, -106, -121]
中文
Arrays.toString(bytes) affiche en décimal les octets signés de Java. Les valeurs négatives correspondent aux octets de 0x80 et plus : -28 vaut 256 − 28 = 228 = 0xE4. Les six octets E4 B8 AD E6 96 87 sont l'encodage UTF-8 de 中文.
AT+CSQ\r\n
41 54 2B 43 53 51 0D 0A
Les modems et la plupart des jeux de commandes UART attendent que chaque commande se termine par un retour chariot suivi d'un saut de ligne. Une zone de texte ne produit que 0A pour Entrée : cochez Sauts de ligne en CR LF et la fin de ligne devient 0D 0A.
653462646130653561356264
e4bda0e5a5bd → 你好
Chaque octet ici est un chiffre hexadécimal ASCII (65 est e, 34 est 4, 62 est b) : le premier décodage produit donc une autre chaîne hex. Cela arrive quand une chaîne hex est traitée comme du texte puis convertie une seconde fois. La page propose le second passage, qui donne 你好. Pour éviter les fausses alertes, elle ne le propose que si le premier résultat compte au moins 12 chiffres hex et que le second se décode en vrai texte — dates, horodatages, valeurs CRC32 et hachages MD5 ne le déclenchent pas.
Collez-le dans le champ de l'onglet Hex → Texte, sous la forme que vous avez : espacé, compact, valeurs 0x, échappements \x, tableau d'octets ou écran xxd complet. La ligne sous le champ indique comment il a été lu.
Le texte apparaît à droite, avec l'encodage détecté automatiquement et la raison de ce choix. Si la détection se trompe, le tableau en dessous montre toutes les lectures ; choisissez la bonne dans le menu Encodage.
Les octets de contrôle comme NUL, CR et LF sont affichés ␀ ␍ ␊. Décochez Afficher les caractères invisibles pour obtenir le texte brut, puis copiez le résultat.
Dans l'onglet Texte → Hex, choisissez l'encodage et un format de sortie — hex espacé, valeurs 0x, tableau C, Java, Python ou Go, ou dump xxd. Cochez CR LF pour les protocoles série et réseau.
Le texte chinois issu d'anciens logiciels Windows, de nombreux périphériques série et de bases de données héritées est en GBK. Le décoder en UTF-8 échoue ou remplit la sortie de caractères de remplacement. Regardez le tableau des encodages et retenez la lecture qui a du sens.
>>> bytes.fromhex('c4e3bac3').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte >>> bytes.fromhex('c4e3bac3').decode('gbk')
'你好' charCodeAt() renvoie une unité de code UTF-16. Pour l'ASCII, elle coïncide avec l'octet : le bug n'apparaît donc qu'avec les autres caractères, où le résultat ne correspond à rien de ce qu'envoie un système UTF-8.
'你'.charCodeAt(0).toString(16) // '4f60' — a UTF-16 code unit
Buffer.from('你', 'utf8').toString('hex') // 'e4bda0' — the UTF-8 bytes Le byte de Java est signé : les octets à partir de 0x80 sont négatifs. Integer.toHexString() travaille sur un int, affiche les valeurs négatives en hex non signé sur 32 bits et supprime les zéros de tête.
Integer.toHexString(b) // "ffffffe4" for 0xE4, "a" for 0x0A
String.format("%02x", b) // "e4", "0a" Buffer.from(hex, 'hex') ne lève jamais d'erreur. Il s'arrête à la première paire qui n'est pas de l'hex valide et ignore un dernier chiffre isolé : une faute de frappe vous donne un buffer plus court au lieu d'une erreur.
Buffer.from('486', 'hex') // <Buffer 48> — the 6 is silently dropped
Buffer.from('48zz65', 'hex') // <Buffer 48> — stops at zz if (!/^([0-9a-f]{2})*$/i.test(hex)) throw new Error('invalid hex');
Buffer.from(hex, 'hex'); Un convertisseur qui se contente de retirer les espaces lit l'offset 00000000: comme des données, et la colonne de caractères comme de l'hex supplémentaire quand il le peut. Le résultat commence par des octets NUL et dérive à partir de là. Utilisez xxd -p pour obtenir de l'hex brut, ou collez le dump ici, où les colonnes sont reconnues.
00000000: 4869 20e4 bda0 e5a5 bd0d 0a Hi ........ → read naively: 00 00 00 00 48 69 20 e4 …
$ printf 'Hi 你好\r\n' | xxd -p 486920e4bda0e5a5bd0d0a
Les modems AT et de nombreux protocoles orientés ligne terminent chaque commande par un retour chariot suivi d'un saut de ligne. Une commande qui se termine par 0A seul est souvent ignorée sans la moindre erreur.
41 54 2B 43 53 51 0A AT+CSQ followed by LF only
41 54 2B 43 53 51 0D 0A AT+CSQ followed by CR LF
0D 0A ou le 00 final — ou faites l'inverse pour construire une commande, avec des fins de ligne CR LF, qu'un périphérique acceptera.b'...' et Node.js sous forme de <Buffer ...>. Collez le fragment de log tel quel pour voir le texte, et savoir s'il était en UTF-8 ou en GBK.00 à FF, et le nombre d'octets est toujours la moitié du nombre de chiffres. Majuscules et minuscules ont le même sens. Séparateurs, préfixes et syntaxe de tableau ne sont que de la notation : 4865, 48 65, 0x48, 0x65 et \x48\x65 sont les deux mêmes octets.00 à 7F. Les caractères imprimables vont de 20 (espace) à 7E (~) ; le reste sont des caractères de contrôle, dont 00 (NUL), 09 (tabulation), 0A (saut de ligne), 0D (retour chariot) et 1B (échappement) sont les plus fréquents dans les données réelles. UTF-8, GBK et ISO-8859-1 conservent tous ces valeurs, ce qui explique qu'un texte en anglais simple survive à presque n'importe quel mauvais encodage.C2–DF pour deux octets, E0–EF pour trois, F0–F4 pour quatre — et chaque octet suivant doit être dans la plage 80–BF. C'est cette structure stricte qui fait qu'une phrase GBK n'est presque jamais de l'UTF-8 valide — lors de notre test sur 33 910 phrases chinoises, 55 l'étaient — et qui explique que la détection automatique fasse confiance à un décodage UTF-8 propre. Un caractère chinois isolé, c'est différent : environ 18 % des caractères GBK forment par hasard une séquence UTF-8 valide de deux octets.81 à FE suivi d'un octet de queue de 40 à FE, 7F exclu. Comme la plage de l'octet de queue est très large, un texte UTF-8 court lu en GBK se décode souvent sans la moindre erreur en caractères sans rapport — E4 BD A0 E5 A5 BD (你好) devient 浣犲ソ —, c'est pourquoi cette page essaie d'abord l'UTF-8. GB18030 étend GBK avec des séquences de quatre octets pour les caractères plus rares ; le décodage de cette page les accepte.41 00 — et l'UTF-16BE l'octet de poids fort en premier — 00 41. Les API Windows et de nombreux fichiers utilisent le little-endian et peuvent commencer par une marque d'ordre des octets, FF FE ; les fichiers UTF-8 commencent parfois par EF BB BF. La détection automatique retire la marque d'ordre des octets et le signale.getBytes(), encode(), un réglage de terminal série, le charset d'une connexion à la base de données — fixez l'encodage explicitement et notez-le à côté de l'hex, pour que l'autre côté n'ait pas à deviner.charCodeAt() en JavaScript ou les valeurs char en Java, donnent des unités de code UTF-16 et non des octets encodés. Encodez d'abord la chaîne avec TextEncoder, Buffer.from() ou getBytes(StandardCharsets.UTF_8), puis formatez les octets.%02x ou un équivalent, jamais un simple appel de conversion nombre vers hex. a et 0a se ressemblent dans un log, mais concaténer des valeurs non complétées produit une chaîne de longueur impaire ou, pire, une chaîne qui se décode en d'autres octets.00 à FF, donc 48656c6c6f correspond aux cinq octets 48, 65, 6C, 6C, 6F. Ensuite, décodez ces octets avec un encodage de caractères. En ASCII et en UTF-8, 48 est H, 65 est e, 6C est l et 6F est o, ce qui donne Hello. C'est à la seconde étape que les résultats divergent : les octets au-dessus de 7F désignent des caractères différents en UTF-8, en GBK et dans d'autres encodages, c'est pourquoi cette page détecte l'encodage et affiche toutes les lectures côte à côte. C4 E3 BA C3 est 你好 en GBK mais de l'UTF-8 invalide, et E4 BD A0 E5 A5 BD est 你好 en UTF-8 mais devient 浣犲ソ une fois lu en GBK. Regardez le tableau des encodages sous le résultat : la ligne qui se lit comme un texte sensé correspond à l'encodage dans lequel les données ont été écrites. Avec un ou deux caractères seulement, la détection automatique ne peut pas toujours trancher : D2 BB est de l'UTF-8 valide (һ) et aussi du GBK (一), vérifiez donc la ligne GBK que la page affiche sous le résultat. Deux autres causes méritent d'être écartées : un chiffre hex en trop ou manquant, qui décale tous les octets suivants d'un demi-octet, et un dump hexadécimal collé avec sa colonne d'offsets. Si vous avez déjà du texte illisible (comme 浣犲ソ) et non de l'hex, collez plutôt ce texte dans le convertisseur d'encodage. E4 BD A0 E5 A5 BD de 你好 s'affichent 浣犲ソ. Ou bien le texte contient des octets de contrôle comme 00 ou 0D 0A, qui apparaissent sous forme de carrés ou de sauts de ligne. Collez l'hex ici : le tableau des encodages montre côte à côte les lectures UTF-8 et GBK, et les octets de contrôle sont affichés ␀ ␍ ␊. 00 à 7F : lettres, chiffres, ponctuation et caractères de contrôle. L'UTF-8 est conçu pour que ces mêmes octets désignent exactement les mêmes caractères, et il utilise des séquences d'octets à partir de 80 pour tout le reste — 2 octets pour les lettres latines accentuées, 3 pour la plupart des caractères chinois, japonais et coréens, 4 pour les emoji. Pour un texte en anglais simple, hex en ASCII et hex en UTF-8 donnent donc des résultats identiques. Ils divergent dès qu'un octet vaut 80 ou plus : un convertisseur limité à l'ASCII ne peut pas afficher ces octets comme des caractères, alors que l'UTF-8 les décode dans toute l'étendue d'Unicode. Pour la signification de chaque octet de 00 à 7F, consultez la table ASCII. E4 BD A0. En GBK et GB2312, ils en occupent 2 : 你 s'écrit C4 E3. En UTF-16, les caractères du plan multilingue de base occupent 2 octets, et l'ordre des octets compte : 你 s'écrit 60 4F en UTF-16LE et 4F 60 en UTF-16BE. Les caractères rares situés hors de ce plan occupent 4 octets en UTF-8, 4 en UTF-16 (une paire de substitution) et 4 en GB18030. Changez l'encodage dans l'onglet Texte → Hex pour voir le nombre d'octets de votre propre texte. bytes.fromhex() puis décodez : bytes.fromhex('48656c6c6f').decode('utf-8') renvoie 'Hello'. fromhex accepte les espaces entre les octets, donc bytes.fromhex('48 65 6c 6c 6f') fonctionne aussi, mais il rejette un préfixe 0x avec une ValueError. Pour des données GBK, décodez avec 'gbk' : bytes.fromhex('c4e3bac3').decode('gbk') renvoie '你好', alors que décoder les mêmes octets en UTF-8 lève UnicodeDecodeError. L'inverse est '你好'.encode('utf-8').hex(), qui renvoie 'e4bda0e5a5bd' ; passez un séparateur, par exemple .hex(' '), pour obtenir une sortie séparée par des espaces. Buffer.from('48656c6c6f', 'hex').toString('utf8') renvoie 'Hello'. Attention aux entrées invalides : Node ne lève pas d'erreur — il s'arrête à la première paire invalide et ignore sans prévenir un dernier chiffre isolé, si bien que Buffer.from('486', 'hex') est un buffer d'un seul octet. Dans le navigateur, construisez les octets vous-même et utilisez TextDecoder, qui lit aussi le GBK : new TextDecoder('gbk').decode(Uint8Array.from('c4e3bac3'.match(/../g), h => parseInt(h, 16))) renvoie '你好'. N'utilisez pas charCodeAt() pour obtenir des octets : '你'.charCodeAt(0).toString(16) vaut '4f60', une unité de code UTF-16, et non les octets UTF-8 e4bda0. unsigned char, puis terminez-le : for (size_t i = 0; i < n; i++) sscanf(hex + 2 * i, "%2hhx", &buf[i]); buf[n] = '\0'; où n vaut strlen(hex) / 2. Avec hex égal à 48656c6c6f2c20e4b896e7958c, afficher buf donne Hello, 世界 sur un terminal UTF-8. Dans l'autre sens, affichez chaque octet avec printf("%02X ", (unsigned char)s[i]). Le cast est important : sur les plateformes où char est signé, un octet comme 0xE4 serait sinon étendu avec son signe et affiché FFFFFFE4. En C++, ajoutez chaque paire à la chaîne avec s.push_back(static_cast<char>(std::stoi(hex.substr(i, 2), nullptr, 16))) ; le même hex donne Hello, 世界. new String(HexFormat.of().parseHex(hex), StandardCharsets.UTF_8) ; pour des données GBK, utilisez plutôt Charset.forName("GBK"). Dans l'autre sens, la surprise classique est ffffffe4, parce que le byte de Java est signé et que Integer.toHexString() prend un int. L'octet 0xE4 est stocké sous la forme -28 ; l'élargir en int conserve la valeur -28, et toHexString affiche les nombres négatifs sous leur valeur non signée sur 32 bits, ffffffe4. La même méthode supprime aussi les zéros de tête : 0x0A devient a. Utilisez String.format("%02x", b), qui formate un octet négatif sous sa valeur non signée sur 8 bits, ou Integer.toHexString(b & 0xff) avec un remplissage à deux chiffres. Depuis Java 17, HexFormat.of().formatHex(bytes) convertit un tableau entier, et HexFormat.of().parseHex(hex) fait l'inverse. hex2bin() décode une chaîne hex en chaîne binaire, et bin2hex() fait l'inverse : bin2hex('Hello') renvoie 48656c6c6f. D'après le manuel PHP, hex2bin() renvoie false et émet un E_WARNING quand l'entrée a une longueur impaire ou n'est pas de l'hexadécimal valide : retirez donc les espaces et les préfixes 0x avant de l'appeler. Les chaînes PHP sont des octets, le résultat a donc l'encodage du texte d'origine — convertissez une sortie GBK avec mb_convert_encoding() si votre page est en UTF-8. xxd (y compris -u, -c et -g), hexdump -C, hex.Dump de Go, od -A x -t x1 et od -t x1z de GNU, et elle développe la ligne * que hexdump et od affichent à la place des lignes répétées. Elle gère aussi hexdump sans option et od -x, qui affichent des mots de 16 bits plutôt que des octets : sur une machine little-endian, les octets 48 69 sont affichés 6948, donc la page réinverse chaque paire et utilise le dernier offset pour retirer l'octet de remplissage ajouté aux données de longueur impaire. Chaque variante de xxd, hexdump et od a été testée sur 600 dumps réels de données aléatoires. a au lieu de 0a), un caractère coupé lors du copier-coller, ou une lettre parasite comme O à la place de 0. Une chaîne hex obtenue en convertissant tous les octets comme un seul grand nombre, par exemple avec hex(int.from_bytes(data, 'big')) en Python, perd le zéro initial : \r\n devient 0xd0a. La page ne devine pas quel chiffre manque, car une mauvaise supposition décale tous les octets suivants d'un demi-octet et produit un charabia convaincant. Elle propose plutôt deux corrections en un clic — ajouter un 0 au début ou retirer le dernier chiffre — pour que vous compariez les résultats. Les valeurs écrites une par une avec un préfixe, comme 0x0 0xa, ne posent aucun problème : chacune est lue comme un octet entier. Encodage et formatage
La table ASCII complète : 128 caractères en décimal, hexadécimal, octal et binaire, plus un convertisseur texte ↔ ASCII. Les caractères de contrôle ont leur échappement, leur notation caret et où vous les croisez.
Encodage et formatage
Décodez et encodez en Base64 en ligne gratuitement. Conversion en temps réel, support UTF-8 et émojis. 100 % privé, dans votre navigateur.
Encodage et formatage
Décodez une chaîne Base64 ou un URI de données en image dans votre navigateur. Aperçu, dimensions et MIME, puis téléchargement en PNG, JPG, GIF, SVG. Sans envoi.
Encodage et formatage
Convertissez du CSV en JSON dans le navigateur. RFC 4180, inférence de types, ligne d'en-tête, sûr pour grands entiers. 100 % privé, sans envoi.
Encodage et formatage
Collez du texte illisible et récupérez l'original. Chaque chaîne d'encodage plausible — UTF-8, GBK, Big5, Shift_JIS, EUC-KR, Windows-1252 — est testée puis classée, la chaîne exacte affichée. Gratuit, privé, dans votre navigateur.
Encodage et formatage
Collez un fichier .env, obtenez du JSON instantanément. Vos mots de passe et clés API ne quittent jamais le navigateur — 100 % privé, sans envoi.