Tarpinės konversijos, kaip įprasta, yra gana populiarios, tačiau eilučių konvertavimas į baitus šiais laikais yra labiau paplitęs dėl to, kad tvarkydami failus ar mašininį mokymąsi ( Pickle File ), mes labai reikalaujame, kad eilutės būtų konvertuojamos į baitus. Aptarkime tam tikrus būdus, kaip tai galima padaryti.
1 metodas: baitų (str, enc) naudojimas Eilutę galima konvertuoti į baitus naudojant bendrąją baitų funkciją. Ši funkcija viduje nurodo CPython biblioteką, kuri netiesiogiai iškviečia kodavimo funkciją, skirtą konvertuoti eilutę į nurodytą koduotę.
Python3
10 iš 40
# 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)))> |
>
>Išvestis:
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
2 metodas: kodavimo (enc) naudojimas Labiausiai rekomenduojamas būdas atlikti šią konkrečią užduotį, naudojant kodavimo funkciją, kad būtų atlikta konversija, nes tai sumažina vieną papildomą susiejimą su konkrečia biblioteka, ši funkcija ją tiesiogiai iškviečia.
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)))> |
>
>Išvestis:
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
2 metodas: atminties peržiūros () naudojimas
Šiame pavyzdyje mes iškviečiame encode() metodą my_string kintamajame, kad konvertuotume jį į baitus naudodami UTF-8 koduotę. Tada gautą baitų objektą perduodame funkcijai memoryview() funkcija, kuri grąžina atminties rodinio objektą, kuris pateikia pagrindinių baitų vaizdą.
Galiausiai, atminties peržiūros objekte iškviečiame metodą tobytes () norėdami sukurti naują baitų objektą, kuriame yra tie patys duomenys. Šis baitų objektas yra saugomas my_bytes kintamajame ir išspausdinamas konsolėje.
PASTABA: funkcija memoryview() naudinga tais atvejais, kai reikia pasiekti pagrindinius objekto baitus jų nenukopijuojant. Tačiau tai gali būti ne pats veiksmingiausias paprastas eilutės konvertavimo į baitus būdas, nes reikalauja papildomų išlaidų.
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)> |
>
kaip gauti iphone jaustukus android
>Išvestis
b'Hello, world!'>
laiko sudėtingumas: O(n),
erdvės sudėtingumas: O(n)
3 metodas: binascii.unhexlify() metodo naudojimas:
Algoritmas:
myflixr
1.Importuokite binascii modulį
2. Inicijuokite eilutę, kurioje yra šešioliktainis baitų vaizdas
3. Norėdami konvertuoti šešioliktainę eilutę į baitus, naudokite modulio binascii metodą unhexlify()
4.Atspausdinkite konvertuotus baitus ir jų tipą.
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> |
>
>Išvestis
The original string : 4766472069732062657374 The byte converted string is : b'GfG is best', type :>
Laiko sudėtingumas:
Metodo binascii.unhexlify() laiko sudėtingumas yra O(n), kur n yra įvesties eilutės ilgis.
Visų kitų šio kodo operacijų laiko sudėtingumas yra O(1).
Todėl bendras šio kodo laiko sudėtingumas yra O (n).
Erdvės sudėtingumas:
Šio kodo erdvės sudėtingumas yra O(1), nes jis naudoja tik pastovų papildomos vietos kiekį, neatsižvelgiant į įvesties dydį.
5 metodas: naudojant struct.pack() metodą.
Žingsnis po žingsnio požiūris
Importuokite struct modulį į savo kodą.
Inicijuokite eilutę pavadinimu „test_string“ su reikšme GFG yra geriausia.
Išspausdinkite pradinę eilutę naudodami spausdinimo teiginį.
Norėdami konvertuoti eilutę į baitus, naudokite metodą baitai (). Perduokite „test_string“ ir „utf-8“ kodavimą kaip metodo parametrus.
Norėdami konvertuoti baitus į dvejetainius duomenis, naudokite metodą struct.pack(). Perduokite formato eilutę „10s“ ir baitus kaip metodo parametrus. 10s formato eilutė rodo, kad įvesties duomenys turi būti traktuojami kaip 10 ilgio eilutė.
Išsaugokite rezultatą kintamajame „res“.
Išspausdinkite konvertuotą baitų eilutę kartu su jos tipu naudodami spausdinimo teiginį.
Python3
katalogo pervadinimas
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)))> |
>
>Išvestis
The original string : GFG is best The byte converted string is : b'GFG is bes', type :>
Laiko sudėtingumas: Bytes() ir struct.pack() metodų laiko sudėtingumas yra O(n), kur n yra įvesties eilutės ilgis.
Pagalbinė erdvė: Bytes() ir struct.pack() metodų erdvės sudėtingumas yra O(n), kur n yra įvesties eilutės ilgis.