Exercices encodage

DonRep 18

Exercices

Exercice 1 *

Voici un message codé en ASCII:

56 49 56 45 20 4C 45 53 20 56 41 43 41 4E 43 45 53 0A

  1. Les caractères sont-ils notés en décimal ou hexadécimal?
  2. Convertir le caractère $20_{hex}$ en binaire.
  3. Le convertir en décimal.
  4. En s’aidant d’une table ASCII, décoder le message.
  5. Pour quel raison ne peut-on pas encoder le mot éléphant en ASCII?

Exercice 2 *

  1. En Unicode, le caractère @ a le point de code U+0040. Convertir le point de code en binaire.
  2. Combien d’octets sont nécessaires pour encoder ce caractère en UTF8?
  3. Mêmes questions pour le caractère Ê de point de code U+00CA.
  4. Mêmes questions pour le caractère € de point de code U+20AC.

Exercice 3 **

  1. Rappeler le principe de conversion d’un entier décimal en binaire.
  2. Convertir 42 en binaire.
  3. Écrire la fonction deci_bin(entier: int) $\rightarrow$ str qui convertit l’entier décimal en binaire. La représentation binaire sera renvoyée sous forme d’une chaîne de caractère. Par exemple:
>>> deci_bin(11)
'1011'
  1. Donner les points de code des lettres du mot Élève.
  2. Convertir ces points de code en binaire puis en décimal.

La fonction native Python chr(n: int) $\rightarrow$ str renvoie le caractère correspondant au point de code n. Le point de code est ici représenté en écriture décimal.

# 'é': point de code U+00E9, soit 233 en décimal
>>> chr(233)
'é'
  1. Écrire la fonction decoder(code_car: list) $\rightarrow$ str qui renvoie le mot correspondant aux points de code (sous forme décimale) stockés dans le tableau code_car.
  2. Tester la fonction avec les points de codes décimaux de Élève.

Exercice 4 **

  1. Trouver le rôle des fonctions natives Python ord et hex.
  2. Écrire la fonction utf8(car: str) $\rightarrow$ str qui renvoie le point de code hexadécimal du caractère car.
  3. Écrire la fonction encoder_hexa(phrase: str) $\rightarrow$ list qui renvoie le tableau des points de code hexadécimaux de chaque lettre de phrase.

Exercice 5 **

  • Une chaîne de caractère est une donnée itérable.
  • Une chaîne de caractère est une donnée immuable.

Écrire la fonction remplacer(chaine: str, car1: str, car2: str) $\rightarrow$ str qui remplace la lettre car1 par car2 dans le mot chaine.

>>> remplacer("éléphant", "é", "e")
'elephant'