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.