En Python 3, le type Bytes est devenu bien plus utilisé qu’en Python 2, pour ainsi dire, certaines fonctions retourne désormais un objet de type Bytes plutôt qu’un objet de type String. Voyons un topo sur les différence et comment passer de l’un à l’autre.





0x01. CONCEPT



Conversion string -> bytes :

 
bytes("ma string")
bytes("ma string","utf-16")
bytes("ma string","iso-8859-1")
...
 



Conversion bytes -> string :
 
b"ma string".decode()
b'\xff\xfem\x00a\x00 \x00s\x00t\x00r\x00i\x00n\x00g\x00 \x00\xe0\x00 \x00m\x00o\x00i\x00'.decode('utf-16')
b'ma string \xe0 moi'.decode('iso-8859-1')
...
 






0x02. EXEMPLES


Vaut mieux parfois des exemples concrets qu’un long discours. Quelques tests :

 
a = "c est à tester !"
 
print(type(a))
# Output: <class 'str'>
 
print(a)
# Output: c est à tester !
 
b = b"test avec un octet"
 
print(type(b))
# Output: <class 'bytes'>
 
a = bytes(a)
# Output: ---------------------------------------------------------------------------
# Output: TypeError Traceback (most recent call last)
# Output: <ipython-input-17-2982bba4a76d> in <module>
# Output: ----> 1 a = bytes(a)
# Output:
# Output: TypeError: string argument without an encoding
 
print(b.decode())
# Output: test avec un octet
 
print( type(b.decode()) )
# Output: <class 'str'>
 
 
c = "à convertir"
d = bytes(c,'utf-8')
print(d)
# Output: b'\xc3\xa0 convertir'
 
print( type(d) )
# Output: bytes
 
print(d.decode())
# Output: à convertir
 
print( type(d.decode()) )
# Output: <class 'str'>
 
b = bytes([3])
print( type(b) )
# Output: bytes
 
i = ord(b)
print( type(i) )
# Output: int
 
 






0x03. EN SAVOIR PLUS


Quelques sites qui m’ont aidé à comprendre :
https://codeigo.com/python/convert-bytes-to-string
https://stackoverflow.com/questions/606191/convert-bytes-to-a-string




   =>   Écrit par : Nicolas, le 25 février 2020


 
Mots clés :  
  python 
    >   Articles connexes :

Trim (ou strip) pour votre terminal


Supprimer les espaces, tabulation et sauts de lignes en début et fin de ligne peut être très utiles lors de l'utilisation courante du...

Bruteforce Vigenère



5752348