Les conversions inter sont comme d'habitude très populaires, mais la conversion entre une chaîne en octets est plus courante de nos jours en raison du fait que pour la gestion des fichiers ou l'apprentissage automatique ( Pickle File ), nous exigeons largement que les chaînes soient converties en octets. Discutons de certaines façons dont cela peut être réalisé.
Méthode n°1 : Utilisation d'octets(str, enc) La chaîne peut être convertie en octets à l’aide de la fonction générique bytes. Cette fonction pointe en interne vers la bibliothèque CPython qui appelle implicitement la fonction encode pour convertir la chaîne en codage spécifié.
Python3
# Python code to demonstrate> # convert string to byte> # Using bytes(str, enc)> # initializing string> test_string>=> 'GFG>is> best'> # printing original string> print>('The original string : '>+> str>(test_string))> # Using bytes(str, enc)> # convert string to byte> res>=> bytes(test_string,>'utf-8'>)> # print result> print>('The byte converted string>is> : '>+> str>(res)>+> ',>type> : '>+> str>(>type>(res)))> |
>
>Sortir :
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
Méthode n°2 : Utiliser encode(enc) La méthode la plus recommandée pour effectuer cette tâche particulière, en utilisant la fonction encode pour effectuer la conversion, car elle réduit un lien supplémentaire vers une bibliothèque particulière, cette fonction l'appelle directement.
Python3
# Python code to demonstrate> # convert string to byte> # Using encode(enc)> # initializing string> test_string>=> 'GFG>is> best'> # printing original string> print>('The original string : '>+> str>(test_string))> # Using encode(enc)> # convert string to byte> res>=> test_string.encode(>'utf-8'>)> # print result> print>('The byte converted string>is> : '>+> str>(res)>+> ',>type> : '>+> str>(>type>(res)))> |
maman kulkarni
>
>Sortir :
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
Méthode n°2 : Utilisation de memoryview()
Dans cet exemple, nous appelons la méthode encode() sur la variable my_string pour la convertir en octets en utilisant le codage UTF-8. Ensuite, nous transmettons l'objet bytes résultant à la fonction memoryview(), qui renvoie un objet vue mémoire qui fournit une vue des octets sous-jacents.
Enfin, nous appelons la méthode tobytes() sur l’objet vue mémoire pour créer un nouvel objet octets contenant les mêmes données. Cet objet bytes est stocké dans la variable my_bytes et imprimé sur la console.
REMARQUE : la fonction memoryview() est utile dans les situations où vous devez accéder aux octets sous-jacents d'un objet sans les copier. Cependant, ce n’est peut-être pas l’approche la plus efficace pour une simple conversion de chaîne en octets, car elle implique une surcharge supplémentaire.
Python3
my_string>=> 'Hello, world!'> #Define a string called my_string with the value 'Hello, world!'.> my_bytes>=> memoryview(my_string.encode(>'utf-8'>)).tobytes()> #Encode the string as bytes using the UTF-8 encoding by calling the encode() method on my_string and passing 'utf-8' as the argument. This will return a bytes object containing the encoded bytes.> #Convert the memoryview object of the bytes object to bytes using the tobytes() method. This creates a new bytes object that is a copy of the original bytes object.> #Print the resulting bytes object using the print() function.#> print>(my_bytes)> |
>
>Sortir
b'Hello, world!'>
complexité temporelle : O(n),
complexité spatiale : O(n)
Méthode n°3 : Utilisation de la méthode binascii.unhexlify() :
Algorithme :
1.Importez le module binascii
2.Initialiser une chaîne contenant la représentation hexadécimale des octets
3.Utilisez la méthode unhexlify() du module binascii pour convertir la chaîne hexadécimale en octets
4.Imprimez les octets convertis et leur type.
Python3
import> binascii> # initializing string> test_string>=> '4766472069732062657374'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # Using binascii.unhexlify()> # convert string to byte> res>=> binascii.unhexlify(test_string)> # print result> print>(>'The byte converted string is : '> +> str>(res)>+> ', type : '> +> str>(>type>(res)))> #This code is contributed by Jyothi pinjala> |
>
>Sortir
The original string : 4766472069732062657374 The byte converted string is : b'GfG is best', type :>
Complexité temporelle :
La méthode binascii.unhexlify() a une complexité temporelle de O(n), où n est la longueur de la chaîne d'entrée.
Toutes les autres opérations de ce code ont une complexité temporelle de O(1).
Par conséquent, la complexité temporelle globale de ce code est O(n).
Complexité spatiale :
La complexité spatiale de ce code est O(1), car il n'utilise qu'une quantité constante d'espace supplémentaire, quelle que soit la taille de l'entrée.
Méthode 5 : en utilisant la méthode struct.pack().
Approche étape par étape
Importez le module struct dans votre code.
Initialisez une chaîne nommée « test_string » avec la valeur GFG est la meilleure.
Imprimez la chaîne d'origine à l'aide de l'instruction print.
Utilisez la méthode bytes() pour convertir la chaîne en octets. Transmettez les encodages 'test_string' et 'utf-8' comme paramètres à la méthode.
Utilisez la méthode struct.pack() pour convertir les octets en données binaires. Transmettez la chaîne de format '10s' et les octets comme paramètres à la méthode. La chaîne de format « 10 s » indique que les données d'entrée doivent être traitées comme une chaîne de longueur 10.
Stockez le résultat dans une variable « res ».
Imprimez la chaîne d'octets convertie avec son type à l'aide de l'instruction print.
Python3
import> struct> # initializing string> test_string>=> 'GFG is best'> # printing original string> print>(>'The original string : '> +> str>(test_string))> # Using struct.pack()> # convert string to byte> res>=> struct.pack(>'10s'>, bytes(test_string,>'utf-8'>))> # print result> print>(>'The byte converted string is : '> +> str>(res)>+> ', type : '> +> str>(>type>(res)))> |
>
>Sortir
The original string : GFG is best The byte converted string is : b'GFG is bes', type :>
Complexité temporelle : la complexité temporelle des méthodes bytes() et struct.pack() est O(n) où n est la longueur de la chaîne d'entrée.
Espace auxiliaire : la complexité spatiale des méthodes bytes() et struct.pack() est O(n) où n est la longueur de la chaîne d'entrée.