Python >> Tutoriel Python >  >> Python Tag >> Array

Fonction Python bytearray()

bytearray() intégré de Python la méthode prend un itérable tel qu'une liste d'entiers entre 0 et 256, les convertit en octets entre 00000000 et 11111111 , et renvoie un nouveau tableau d'octets sous la forme d'un bytearray classe.

Voici un exemple minimal qui crée un bytearray parmi trois entiers stockés dans une liste :

>>> bytearray([1, 2, 3])
bytearray(b'\x01\x02\x03')

Le préfixe \x séquence d'échappement signifie que les deux caractères suivants sont interprétés comme des codes de caractères hexadécimaux. Par exemple, le code hexadécimal \x01 est identique à chr(0x01)=16*0+1=1 c'est simplement un début de rubrique SOH personnage. (source, table ASCII)

Syntax: bytearray([source[, encoding[, errors]]])
Argumentation source (Facultatif) Permet d'initialiser le bytearray de quatre manières différentes (de la plus simple à la plus complexe) :

? entier –> array a cette taille et est initialisé avec 0 octet :
>>> bytearray(4)
bytearray(b'\x00\x00\x00\x00')


? itérable –> entiers dans la plage 0 <= x < 256 sont le contenu initial du bytearray :
>>> bytearray([1, 2, 3])
bytearray(b'\x01\x02\x03')


? chaîne et vous fournissez l'encodage (et éventuellement, erreurs ) arguments –> bytearray() convertit la chaîne en octets en utilisant str.encode() .

? objet l'implémentation de l'interface de tampon -> initialise le tableau d'octets via un tampon d'objet en lecture seule.
Argumentation encoding (Facultatif) L'encodage utilisé dans le cas où vous fournissez un argument de chaîne. Exemple :'UTF-8' .
Argumentation errors (Facultatif) L'action à entreprendre lorsque la conversion d'encodage échoue. N'a de sens que si source l'argument est une chaîne.
Valeur de retour bytearray Renvoie un nouvel objet de type bytearray—une séquence d'octets.
⭐ Sans argument optionnel, il renvoie un bytearray avec un octet 0 :bytearray() –> bytearray(b'')

Voici quelques utilisations de base de la fonction :

Input : bytearray(4)
Output : bytearray(b'\x00\x00\x00\x00')

Input : bytearray([1, 2, 3])
Output : bytearray(b'\x01\x02\x03')

Input : bytearray('hi', 'UTF-8')
Output : bytearray(b'hi')

Vous voulez en savoir plus ? Nous allons ensuite nous plonger dans d'autres exemples !


Mais avant de continuer, je suis ravi de vous présenter mon nouveau livre Python Python One-Liners (Lien Amazon).

Si vous aimez les one-liners, vous allez adorer le livre. Il vous apprendra tout ce qu'il y a à savoir sur une seule ligne de code Python. Mais c'est aussi une introduction à l'informatique , science des données, apprentissage automatique et algorithmes. L'univers en une seule ligne de Python !

Le livre est sorti en 2020 avec l'éditeur de livres de programmation de classe mondiale NoStarch Press (San Francisco).

Lien :https://nostarch.com/pythononeliners

Créer un tableau d'octets à partir d'un argument entier unique - Exemples

Le code suivant vous montre comment utiliser le bytearray() fonction sur des arguments entiers simples.

# Single Integer Input Argument
print(bytearray())
print(bytearray(2))
print(bytearray(4))

'''
bytearray(b'')
bytearray(b'\x00\x00')
bytearray(b'\x00\x00\x00\x00')
'''

Si vous fournissez un seul argument d'entrée, il utilise cet argument d'entrée pour déterminer le nombre d'octets à créer. Il utilise simplement des octets avec la valeur 0, en notation d'octet \x00 pour remplir le bytearray .

Créer un tableau d'octets à partir d'un itérable d'entiers – Exemples

Vous pouvez également fournir un argument itérable pour obtenir un nouveau bytearray :

# Iterable Input Argument
print(bytearray([1, 1, 1]))
print(bytearray([14]))
print(bytearray({9, 8, 7}))

'''
bytearray(b'\x01\x01\x01')
bytearray(b'\x0e')
bytearray(b'\x08\t\x07')
'''

L'itérable doit être composé d'un nombre d'entiers compris entre 0 et 256. Si vous ne le faites pas, Python lancera une ValueError :

Comment réparer "ValueError :l'octet doit être compris dans la plage (0, 256)"

Si vous utilisez le bytearray() fonction sur un itérable qui contient au moins un entier supérieur au nombre maximum représentable par 8 bits, à savoir 256, ou inférieur à 0, Python lancera un ValueError: byte must be in range(0, 256) . Vous pouvez résoudre ce problème en vous assurant que chaque nombre de votre itérable peut en fait être représenté par 8 bits et tombe dans l'intervalle de 0 à 256.

Voici un exemple de ValueError où vous utilisez un nombre supérieur ou égal à 256 :

>>> bytearray([999])
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    bytearray([999])
ValueError: byte must be in range(0, 256)

Autre exemple d'utilisation d'un nombre inférieur à 0 :

>>> bytearray([-10])
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    bytearray([-10])
ValueError: byte must be in range(0, 256)

Corrigez-le en modifiant les nombres pour qu'ils se situent dans l'intervalle de 0 à 256 :

>>> bytearray([255])
bytearray(b'\xff')

Résumé

bytearray() intégré de Python permet de créer un nouveau bytearray et l'initialiser de quatre manières différentes (de la plus simple à la plus complexe) :

? entier –> tableau a cette taille et est initialisé avec 0 octet :

>>> bytearray(4)
bytearray(b'\x00\x00\x00\x00')

? itérable –> entiers dans la plage 0 <= x < 256 sont le contenu initial du bytearray :

>>> bytearray([1, 2, 3])
bytearray(b'\x01\x02\x03')

? chaîne et vous fournissez l'encodage (et éventuellement, erreurs ) arguments –> bytearray() convertit la chaîne en octets en utilisant str.encode() .

>>> bytearray('hi', 'UTF-8')
bytearray(b'hi')

? objet l'implémentation de l'interface de tampon -> initialise le tableau d'octets via un tampon d'objet en lecture seule.

Voulez-vous améliorer vos compétences Python d'une manière amusante et facile à consommer ? Considérez les ressources suivantes et devenez un maître codeur !