Python >> Tutoriel Python >  >> Python

Fonction Python bytes()

bytes(source) intégré de Python la fonction crée un bytes immuable objet initialisé comme défini dans l'argument de la fonction source . Un objet bytes est comme une chaîne mais il n'utilise que des caractères byte constitués d'une séquence d'entiers 8 bits dans la plage 0<=x<256 . L'objet byte renvoyé est immuable :vous ne pouvez pas le modifier après sa création. Si vous envisagez de modifier le contenu, utilisez le bytearray() méthode pour créer un bytearray mutable objet.

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

>>> bytes([1, 2, 3])
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 cap SOH personnage. (source, table ASCII)

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

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


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


? chaîne et vous fournissez l'encodage (et éventuellement, erreurs ) arguments --> bytes() convertit la chaîne en octets en utilisant str.encode() :
>>> bytes('hi', 'UTF-8')
b'hi'


? objet l'implémentation de l'interface de tampon --> initialise l'objet octet 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 byte Renvoie un nouvel objet de type byte—une séquence d'octets qui est immuable. Pour une version mutable, pensez à utiliser le bytearray() fonction.
⭐ Sans argument optionnel, il renvoie un objet byte avec un octet 0 :
>>> bytes()
b''

Voici quelques utilisations de base de la fonction :

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

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

Input : bytes('hi', 'UTF-8')
Output : 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 objet Bytes à partir d'un argument entier unique - Exemples

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

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

'''
b''
b'\x00\x00'
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 byte .

Créer un objet Bytes à partir d'un itérable d'entiers – Exemples

Vous pouvez également fournir un argument itérable pour obtenir un nouvel objet byte :

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

'''
b'\x01\x01\x01'
b'\x0e'
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 bytes() 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 :

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

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

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

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

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

Résumé

La fonction intégrée de Python bytes() permet d'initialiser le byte de quatre manières différentes (de la plus simple à la plus complexe) :

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

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

? itérable --> entiers dans la plage 0 <= x < 256 sont le contenu initial des octets :

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

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

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

? objet l'implémentation de l'interface de tampon -> initialise l'objet octet 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 !


Post précédent
Prochain article