Un exercice de codage ASCII

Codage ASCII en hexadécimal

En classe de première générale (cours de NSI), on doit savoir coder en ASCII. L'exercice qui suit entre dans ce cadre-ci.

 

Exercice

Quel est le codage ASCII du texte suivant (en hexadécimal) ? Je suis en avance.

Utiliser deux méthodes : Python et la table des caractères ASCII imprimables qui suit :

Décimal Hexadécimal Caractère
32 20 SP
33 21 !
34 22 "
35 23 #
36 24 $
37 25 %
38 26 &
39 27 '
40 28 (
41 29 )
42 2A *
43 2B +
44 2C ,
45 2D -
46 2E .
47 2F /
48 30 0
49 31 1
50 32 2
51 33 3
52 34 4
53 35 5
54 36 6
55 37 7
56 38 8
57 39 9
58 3A :
59 3B ;
60 3C
61 3D =
62 3E
63 3F ?
64 40 @
65 41 A
66 42 B
67 43 C
68 44 D
69 45 E
70 46 F
71 47 G
72 48 H
73 49 I
74 4A J
75 4B K
76 4C L
77 4D M
78 4E N
79 4F O
80 50 P
81 51 Q
82 52 R
83 53 S
84 54 T
85 55 U
86 56 V
87 57 W
88 58 X
89 59 Y
90 5A Z
91 5B [
92 5C \
93 5D ]
94 5E ^
95 5F _
96 60 `
97 61 a
98 62 b
99 63 c
100 64 d
101 65 e
102 66 f
103 67 g
104 68 h
105 69 i
106 6A j
107 6B k
108 6C l
109 6D m
110 6E n
111 6F o
112 70 p
113 71 q
114 72 r
115 73 s
116 74 t
117 75 u
118 76 v
119 77 w
120 78 x
121 79 y
122 7A z
123 7B {
124 7C |
125 7D }
126 7E ~

 

Corrigé

Exemple de programme en Python. Comme la fonction ord ne s’applique qu’à un caractère, il faut employer une boucle. Le paramètre end suivi d’un blanc permet d’obtenir le résultat en ligne avec espaces entre les codes. Nous créons une fonction ascii.

def ascii(t):
    for c in t:
        print(hex(ord(c)), end=" ")

ascii("Je suis en avance.")

0x4a 0x65 0x20 0x73 0x75 0x69 0x73 0x20 0x65 0x6e 0x20 0x61 0x76 0x61 0x6e 0x63 0x65 0x2e

Supprimez les 0x pour plus de clarté.

Avec la table on procède lettre par lettre. Le J majuscule a pour code hexadécimal 4A, le e minuscule est codé 65, etc. Les espaces entre les mots ont pour code 20. À la fin, ne pas oublier le point (2E). On retrouve évidemment la suite que Python nous avait aimablement fournie.