Medpretvorbe so kot običajno precej priljubljene, vendar je pretvorba med nizom v bajte dandanes pogostejša zaradi dejstva, da za obdelavo datotek ali strojnega učenja ( Pickle File ) v veliki meri zahtevamo, da se nizi pretvorijo v bajte. Razpravljajmo o nekaterih načinih, na katere je to mogoče izvesti.
1. način: uporaba bajtov (str, enc) Niz je mogoče pretvoriti v bajte z uporabo splošne funkcije bajtov. Ta funkcija interno kaže na knjižnico CPython, ki implicitno pokliče funkcijo kodiranja za pretvorbo niza v določeno kodiranje.
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)))> |
>
programski vzorci java
>Izhod:
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
2. način: Uporaba kodiranja (enc) Najbolj priporočljiva metoda za izvedbo te posebne naloge je uporaba funkcije kodiranja za izvedbo pretvorbe, saj zmanjša eno dodatno povezavo do določene knjižnice, ta funkcija jo neposredno pokliče.
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)))> |
>
>Izhod:
kako najti blokirane številke na androidu
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
2. način: Uporaba memoryview()
V tem primeru kličemo metodo encode() za spremenljivko my_string, da jo pretvorimo v bajte z uporabo kodiranja UTF-8. Nato dobljeni objekt bajtov posredujemo funkciji memoryview(), ki vrne objekt pogleda pomnilnika, ki nudi pogled osnovnih bajtov.
Nazadnje kličemo metodo tobytes() na objektu pogleda pomnilnika, da ustvarimo nov objekt bytes, ki vsebuje iste podatke. Ta objekt bytes je shranjen v spremenljivki my_bytes in natisnjen na konzoli.
OPOMBA: funkcija memoryview() je uporabna v primerih, ko morate dostopati do osnovnih bajtov predmeta, ne da bi jih kopirali. Vendar morda ni najučinkovitejši pristop za preprosto pretvorbo nizov v bajte, saj vključuje dodatne stroške.
Python3
java string.format
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)> |
>
>Izhod
b'Hello, world!'>
časovna zahtevnost: O(n),
kompleksnost prostora: O(n)
Metoda #3 : Uporaba metode binascii.unhexlify():
Algoritem:
1. Uvozite modul binascii
2. Inicializirajte niz, ki vsebuje šestnajstiško predstavitev bajtov
3. Uporabite metodo unhexlify() modula binascii za pretvorbo šestnajstiškega niza v bajte
4. Natisnite pretvorjene bajte in njihovo vrsto.
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> |
>
razlika med programom in skriptom
>Izhod
The original string : 4766472069732062657374 The byte converted string is : b'GfG is best', type :>
Časovna zapletenost:
Metoda binascii.unhexlify() ima časovno kompleksnost O(n), kjer je n dolžina vhodnega niza.
Vse druge operacije v tej kodi imajo časovno kompleksnost O(1).
Zato je skupna časovna kompleksnost te kode O(n).
Kompleksnost prostora:
Prostorska kompleksnost te kode je O(1), saj uporablja samo stalno količino dodatnega prostora, ne glede na velikost vnosa.
5. način: uporaba metode struct.pack().
Pristop korak za korakom
Uvozite modul struct v svojo kodo.
Najbolje je inicializirati niz z imenom 'test_string' z vrednostjo GFG.
Natisnite izvirni niz z uporabo izjave za tiskanje.
Za pretvorbo niza v bajte uporabite metodo bytes(). Metodi kot parametra posredujte kodiranje »test_string« in »utf-8«.
Za pretvorbo bajtov v binarne podatke uporabite metodo struct.pack(). Metodi posredujte formatni niz '10s' in bajte kot parametre. Oblika niza '10s' nakazuje, da je treba vhodne podatke obravnavati kot niz dolžine 10.
Shranite rezultat v spremenljivko 'res'.
Natisnite pretvorjeni bajtni niz skupaj z njegovo vrsto z uporabo izjave za tiskanje.
Python3
repl v javi
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)))> |
>
>Izhod
The original string : GFG is best The byte converted string is : b'GFG is bes', type :>
Časovna kompleksnost: Časovna kompleksnost metod bytes() in struct.pack() je O(n), kjer je n dolžina vhodnega niza.
Pomožni prostor: prostorska kompleksnost metod bytes() in struct.pack() je O(n), kjer je n dolžina vhodnega niza.