Un exercice de codage UTF-8

Codage UTF-8 : binaire et hexadécimal

Nous vous proposons ici un exercice de codage UTF-8. Son niveau de difficulté est celui d’une première générale (cours de NSI).

 

Exercice

1- Quel est le codage UTF-8 de Père Noël en octets ?

Vous trouverez la table des caractères courants en page d’exercice de codage ASCII. Le point de code de è est 232 et celui de ë est 235.

père Noël

2- Quel est le codage UTF-8 de Père Noël en hexadécimal ?

 

Codages en octets

D’après la table, le point de code de P est 80. Pour une conversion en base 2, on remarque que \(80 = 2^6 + 2^4.\) Donc 1010000. Comme un octet suffit, on ajoute 0 devant. Soit 01010000.

Le point de code de è est 232 (énoncé). \(232\) \(=\) \(2^7 + 2^6 + 2^5 + 2^3\) soit 11101000, ce qui nécessite deux octets pour un codage UTF-8.

Donc le premier commence par 110 et le second par 10 comme c’est toujours le cas quand le codage nécessite deux octets. Pour le second, on ajoute les six derniers chiffres du point de code en base 2, ce qui donne 10101000. Reste deux chiffres à ajouter au premier, soit 11000011. La réponse est donc 11000011 10101000.

Le point de code de r est 114. Soit 01110010.

Celui de e est 101. Soit 01100101.

Celui de l’espace est 32. Soit 00100000.

Celui de N est 78. Soit 01001110.

Celui de o est 111. Soit 01101111.

Celui de ë est 235. En base 2 : 11101011. Il faut donc deux octets pour le coder. Le premier commence par 110 suivi des deux premiers chiffres, soit 11000011, et le second par 10 suivi des six derniers, soit 10101011.

Enfin, le point de code de l est 108, soit l’octet 01101100.

Conclusion, la suite d’octets en codage UTF-8 est 01010000 11000011 10101000 01110010 01100101 00100000 01001110 01101111 11000011 10101011 01101100.

 

Codage en hexadécimal

Les codes en hexadécimal sont indiqués sur la table ASCII.

Ne craignant aucun défi, trouvons celui de P à partir du binaire. En fait, c’est plus un jeu qu’une prise de tête…

Il s’agit de passer de la base 2 à la base 16.

Décomposons 01010000 en paquets de 4. Soit 0101 0000.

0101 vaut 5 en base 10 comme en base 16. 0000 vaut bien sûr 0. Donc en hexadécimal P s’écrit 50. On le vérifie sur la table.

Pour le codage de è, nous devons traduire 1100 0011 1010 1000.

1100 vaut 12 en base 10 puisque \(2^3 + 2^2 = 12.\) En base 16, c’est C (10 vaut A, 11 vaut B et 12 vaut C). 0011 est égal à 3 en base 10 comme en base 16. 1010 vaut 10 en base 10 donc A en hexadécimal et 1000 = 8 en décimal et en hexadécimal. Donc è s’écrit C3 A8.

Accélérons en nous reportant directement à la table.

r : 72
e : 65
Espace : 20
N : 4E
o : 6F

Au tour de ë, qui nécessite deux octets. Nous devons traduire 1100 0011 1010 1011.

1100 : nous avons déjà vu que sa traduction en hexadécimal est C.
0011 : facile, c’est 3.
1010 : nous avons vu que c’est A.
1011 : c’est 11 en base 10 donc B en base 16.

Par conséquent, ë s’écrit C3 AB.

Enfin, l vaut 6C.

Avec le codage UTF-8, Père Noël s’écrit 50 C3 A8 72 65 20 4E 6F C3 AB 6C en hexadécimal.

 

Annexe

Voici un extrait de la table UTF-8 (caractères minuscules accentués). Vous pouvez vérifier le codage de è et de ë. Bien sûr, l’exercice aurait été plus facile si vous aviez disposé de cette table plus tôt…

Point de code Caractère Hexadécimal
U+00E0 à c3 a0
U+00E1 á c3 a1
U+00E2 â c3 a2
U+00E3 ã c3 a3
U+00E4 ä c3 a4
U+00E5 å c3 a5
U+00E6 æ c3 a6
U+00E7 ç c3 a7
U+00E8 è c3 a8
U+00E9 é c3 a9
U+00EA ê c3 aa
U+00EB ë c3 ab
U+00EC ì c3 ac
U+00ED í c3 ad
U+00EE î c3 ae
U+00EF ï c3 af
U+00F0 ð c3 b0
U+00F1 ñ c3 b1
U+00F2 ò c3 b2
U+00F3 ó c3 b3
U+00F4 ô c3 b4
U+00F5 õ c3 b5
U+00F6 ö c3 b6
U+00F7 ÷ c3 b7
U+00F8 ø c3 b8
U+00F9 ù c3 b9
U+00FA ú c3 ba
U+00FB û c3 bb
U+00FC ü c3 bc

 

demande au père Noël