logo

Python | Previesť reťazec na bajty

Medzikonverzie sú ako zvyčajne pomerne populárne, ale konverzia medzi reťazcom na bajty je v súčasnosti bežnejšia, pretože na prácu so súbormi alebo strojové učenie ( Pickle File ) vo veľkej miere vyžadujeme konverziu reťazcov na bajty. Poďme diskutovať o určitých spôsoboch, ako to možno vykonať.

Metóda č. 1: Použitie bajtov (str, enc) Reťazec možno previesť na bajty pomocou všeobecnej funkcie bajtov. Táto funkcia interne ukazuje na knižnicu CPython, ktorá implicitne volá funkciu kódovania na konverziu reťazca na zadané kódovanie.



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)))>



>

>

Výkon :

The original string : GFG is best The byte converted string is : b'GFG is best', type :>

Metóda č. 2: Použitie kódovania (enc) Najodporúčanejšia metóda na vykonanie tejto konkrétnej úlohy, pomocou funkcie kódovania na vykonanie konverzie, pretože znižuje jedno ďalšie prepojenie na konkrétnu knižnicu, táto funkcia ju priamo volá.

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)))>

>

>

Výkon :

The original string : GFG is best The byte converted string is : b'GFG is best', type :>

Metóda #2: Použitie memoryview()

V tomto príklade voláme metódu encode() v premennej my_string, aby sme ju skonvertovali na bajty pomocou kódovania UTF-8. Potom odovzdáme výsledný objekt bajtov funkcii memoryview(), ktorá vráti objekt zobrazenia pamäte, ktorý poskytuje pohľad na základné bajty.

Nakoniec voláme metódu tobytes() na objekte zobrazenia pamäte, aby sme vytvorili nový objekt bajtov obsahujúci rovnaké údaje. Tento objekt bytes je uložený v premennej my_bytes a vytlačený na konzole.

POZNÁMKA: Funkcia memoryview() je užitočná v situáciách, keď potrebujete získať prístup k základným bajtom objektu bez ich kopírovania. Nemusí to však byť najefektívnejší prístup pre jednoduchú konverziu reťazca na bajty, pretože zahŕňa dodatočnú réžiu.

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)>

>

>

Výkon

b'Hello, world!'>

časová zložitosť: O(n),

priestorová zložitosť: O(n)

Metóda #3: Použitie metódy binascii.unhexlify():

Algoritmus:

1.Importujte modul binascii
2. Inicializujte reťazec obsahujúci hexadecimálnu reprezentáciu bajtov
3. Pomocou metódy unhexlify() modulu binascii skonvertujte hexadecimálny reťazec na bajty
4. Vytlačte skonvertované bajty a ich typ.

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>

>

>

Výkon

The original string : 4766472069732062657374 The byte converted string is : b'GfG is best', type :>

Časová zložitosť:

int parseint

Metóda binascii.unhexlify() má časovú zložitosť O(n), kde n je dĺžka vstupného reťazca.
Všetky ostatné operácie v tomto kóde majú časovú zložitosť O(1).
Celková časová zložitosť tohto kódu je teda O(n).

Priestorová zložitosť:

Priestorová zložitosť tohto kódu je O(1), pretože využíva iba konštantné množstvo priestoru navyše, bez ohľadu na veľkosť vstupu.

Metóda 5: pomocou metódy struct.pack().

Prístup krok za krokom

Importujte modul struct do svojho kódu.
Inicializujte reťazec s názvom „test_string“ s hodnotou GFG je najlepšia.
Vytlačte pôvodný reťazec pomocou príkazu print.
Na konverziu reťazca na bajty použite metódu bytes(). Do metódy odovzdajte kódovanie „test_string“ a „utf-8“ ako parametre.
Pomocou metódy struct.pack() konvertujte bajty na binárne dáta. Odovzdajte metóde formátovací reťazec „10s“ a bajty ako parametre. Formátový reťazec „10s“ označuje, že so vstupnými údajmi by sa malo zaobchádzať ako s reťazcom dĺžky 10.
Uložte výsledok do premennej „res“.
Vytlačte skonvertovaný bajtový reťazec spolu s jeho typom pomocou príkazu 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)))>

>

>

Výkon

The original string : GFG is best The byte converted string is : b'GFG is bes', type :>

Časová zložitosť: Časová zložitosť metód bytes() a struct.pack() je O(n), kde n je dĺžka vstupného reťazca.

Pomocný priestor: Priestorová zložitosť metód bytes() a struct.pack() je O(n), kde n je dĺžka vstupného reťazca.