Objets de type bytes et bytearray

On sait que le code “Ascii” (American Standard Code for Information Interchange) permet de représenter, dans un registre qui va de 0 à 127, les caractères de l’alphabet anglais (ainsi que quelques caractères non imprimables) et qu’il a été complété (pour un registre de codes allant de 128 à 255) dans différents formats pour les caractères accentués (notamment le code “ISO 8859-1”, ou encore “Latin-1”, utilisé pour les langues d’Europe de l’ouest).

Le code “Ascii étendu” identifie donc caractères et octets (valeurs binaires sur 8 bits, de 0 à {2^8-1} = 255).

Pour coder tous ( ?) les caractères et symboles de tous ( ?) les alphabets (par exemple les caractères des langues d’Asie), il a fallu mettre au point une norme mondiale, dite “Unicode”.

Les chaînes de caractères Python sont des séquences non mutables de caractères, et elle utilisent le format Unicode.

Cette universalité se paie du prix qui est la taille suivant laquelle chaque caractère est codé. Mais Python est suffisamment optimisé pour qu’on n’ait pas à s’en soucier. On remarque simplement que la taille d’une chaîne de caractères peut dépendre de la nature de ceux-ci, comme le montrent les exemples suivants.

Les bytes ressemblent aux chaînes de caractères : ils sont des séquences non mutables d’entiers compris entre 0 et 255 (c’est-à-dire codés sur un octet, “byte” en anglais). On peut tout à fait les considérer comme des chaînes de caractères, à condition de se limiter aux caractères du code ascii standard (pas de caractère accentué).

On peut les créer avec le préfixe b (suivi d’une chaîne alphabétique) ou par la fonction bytes (appliquée à un “iterate”).

On peut appliquer aux “bytes” les fonctions communes sur les séquences non mutables. Comme ils s’apparentent étroitement aux chaînes de caractères, ils possèdent également la plupart des méthodes de la classe string.

Les objets de type bytearray sont des tableaux mutables d’entiers compris entre 0 et 255.

On peut appliquer aux objets de type bytearray les fonctions communes sur les séquences non mutables, mais également les méthodes spécifiques aux séquences mutables (c’est-à-dire les méthodes applicables aux listes). Comme ils s’apparentent étroitement aux chaînes de caractères, ils possèdent également la plupart des méthodes de la classe string.

On retiendra que les objets de type bytes et bytearray sont adaptés au traitement des informations sur des entiers de l’intervalle [0,255]. Pour plus d’information, on pourra évaluer help(bytes) et help(bytearray).

Retour à l’accueil du cours Python/Numpy

Sommaire du chapitre 5

  1. Propriétés communes aux séquences (hors “mutations”)
  2. Séquences mutables ou non
  3. Listes définies “en compréhension”
  4. Opérations de mutation de listes
  5. Les tuples
  6. Les chaînes de caractères
  7. Méthodes importantes sur les chaînes (split, join, format)
  8. Objets de type bytes et bytearray