Interconversies zijn zoals gewoonlijk behoorlijk populair, maar conversie tussen een string naar bytes komt tegenwoordig vaker voor vanwege het feit dat we voor het verwerken van bestanden of Machine Learning (Pickle File) in grote mate vereisen dat de strings worden geconverteerd naar bytes. Laten we bepaalde manieren bespreken waarop dit kan worden uitgevoerd.
tostring-methode
Methode #1: Bytes(str, enc) gebruiken String kan worden geconverteerd naar bytes met behulp van de generieke bytesfunctie. Deze functie verwijst intern naar de CPython-bibliotheek die impliciet de coderingsfunctie aanroept voor het converteren van de tekenreeks naar de opgegeven codering.
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)))> |
>
>Uitgang:
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
Methode #2: Encode(enc) gebruiken De meest aanbevolen methode om deze specifieke taak uit te voeren, is het gebruik van de codeerfunctie om de conversie te voltooien. Omdat het één extra koppeling naar een bepaalde bibliotheek vermindert, roept deze functie deze rechtstreeks aan.
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)))> |
>
>Uitgang:
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
Methode #2: Memoryview() gebruiken
In dit voorbeeld roepen we de methode encode() aan op de my_string variabele om deze naar bytes te converteren met behulp van de UTF-8-codering. Vervolgens geven we het resulterende bytesobject door aan de functie memoryview(), die een memory view-object retourneert dat een weergave biedt van de onderliggende bytes.
Ten slotte roepen we de methode tobytes() aan op het Memory View-object om een nieuw bytes-object te maken dat dezelfde gegevens bevat. Dit bytes-object wordt opgeslagen in de my_bytes-variabele en afgedrukt naar de console.
OPMERKING: de functie memoryview() is handig voor situaties waarin u toegang moet krijgen tot de onderliggende bytes van een object zonder deze te kopiëren. Het is echter mogelijk niet de meest efficiënte aanpak voor eenvoudige conversie van tekenreeksen naar bytes, omdat dit extra overhead met zich meebrengt.
Python3
die school maakte
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)> |
>
>Uitvoer
b'Hello, world!'>
tijdscomplexiteit: O(n),
ruimtecomplexiteit: O(n)
Hoe verander je de string in int?
Methode #3: Binascii.unhexlify() methode gebruiken:
algoritme:
1. Importeer de binascii-module
2. Initialiseer een string die de hexadecimale representatie van bytes bevat
3. Gebruik de unhexlify()-methode van de binascii-module om de hexadecimale tekenreeks naar bytes te converteren
4. Druk de geconverteerde bytes en hun type af.
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> |
>
>Uitvoer
The original string : 4766472069732062657374 The byte converted string is : b'GfG is best', type :>
Tijdcomplexiteit:
De methode binascii.unhexlify() heeft een tijdscomplexiteit van O(n), waarbij n de lengte van de invoertekenreeks is.
Alle andere bewerkingen in deze code hebben een tijdscomplexiteit van O(1).
Daarom is de totale tijdscomplexiteit van deze code O(n).
Ruimtecomplexiteit:
32-bits architectuur versus 64-bits
De ruimtecomplexiteit van deze code is O(1), omdat deze slechts een constante hoeveelheid extra ruimte gebruikt, ongeacht de invoergrootte.
Methode 5: gebruik van de struct.pack() methode.
Stapsgewijze aanpak
Importeer de struct-module in uw code.
Initialiseer een string met de naam ‘test_string’ met de waarde GFG is het beste.
Druk de originele string af met behulp van de print-instructie.
Gebruik de methode bytes() om de tekenreeks naar bytes te converteren. Geef de codering ‘test_string’ en ‘utf-8’ als parameters door aan de methode.
Gebruik de methode struct.pack() om de bytes naar binaire gegevens te converteren. Geef de formatstring ‘10s’ en de bytes als parameters door aan de methode. De formatstring ‘10s’ geeft aan dat de invoergegevens moeten worden behandeld als een string met lengte 10.
Sla het resultaat op in een variabele ‘res’.
Druk de geconverteerde bytereeks af, samen met het type, met behulp van de printinstructie.
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)))> |
>
>Uitvoer
The original string : GFG is best The byte converted string is : b'GFG is bes', type :>
Tijdcomplexiteit: De tijdcomplexiteit van de methoden bytes() en struct.pack() is O(n), waarbij n de lengte van de invoertekenreeks is.
Hulpruimte: De ruimtecomplexiteit van de methoden bytes() en struct.pack() is O(n), waarbij n de lengte van de invoertekenreeks is.