Python | Muunna merkkijono tavuiksi
Välimuunnokset ovat tavalliseen tapaan melko suosittuja, mutta muuntaminen merkkijonojen välillä tavuiksi on nykyään yleisempää, koska tiedostojen käsittelyssä tai koneoppimisessa ( Pickle File ) vaadimme laajasti merkkijonojen muuntamista tavuiksi. Keskustellaan tietyistä tavoista, joilla tämä voidaan suorittaa.
Tapa 1: Tavujen (str, enc) käyttäminen Merkkijono voidaan muuntaa tavuiksi käyttämällä yleistä tavutoimintoa. Tämä toiminto viittaa sisäisesti CPython Libraryyn, joka kutsuu implisiittisesti koodaustoimintoa merkkijonon muuntamiseksi määritettyyn koodaukseen.
Python 3
# 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)))> |
Lähtö:
The original string : GFG is best The byte converted string is : b'GFG is best', type :
Tapa 2: Encode(enc) käyttö Suositeltavin menetelmä tämän tehtävän suorittamiseen käyttämällä koodaustoimintoa muunnoksen suorittamiseen, koska se vähentää ylimääräistä linkitystä tiettyyn kirjastoon, tämä toiminto kutsuu sitä suoraan.
Python 3
# 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)))> |
Lähtö:
The original string : GFG is best The byte converted string is : b'GFG is best', type :
Tapa 2: Muistinäkymän () käyttäminen
Tässä esimerkissä kutsumme my_string-muuttujan encode()-menetelmää sen muuntamiseksi tavuiksi UTF-8-koodauksella. Sitten välitämme tuloksena olevan tavuobjektin memoryview()-funktiolle, joka palauttaa muistinäkymäobjektin, joka tarjoaa näkymän alla olevista tavuista.
Lopuksi kutsumme muistinäkymäobjektin tobytes()-menetelmää luodaksemme uuden tavuobjektin, joka sisältää samat tiedot. Tämä tavuobjekti tallennetaan my_bytes-muuttujaan ja tulostetaan konsoliin.
HUOMAA: memoryview()-toiminto on hyödyllinen tilanteissa, joissa sinun on käytettävä objektin alla olevia tavuja kopioimatta niitä. Se ei kuitenkaan ehkä ole tehokkain tapa yksinkertaiseen merkkijonosta tavuksi muuntamiseen, koska siihen liittyy lisäkustannuksia.
Python 3
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)> |
Lähtö
b'Hello, world!'
aika monimutkaisuus: O(n),
avaruuden monimutkaisuus: O(n)
Menetelmä 3 : Binascii.unhexlify()-menetelmän käyttäminen:
Algoritmi:
1.Tuo binascii-moduuli
2.Alusta merkkijono, joka sisältää tavujen heksadesimaalimuodon
3.Käytä binascii-moduulin unhexlify()-menetelmää heksadesimaalimerkkijonon muuntamiseen tavuiksi
4.Tulosta muunnetut tavut ja niiden tyyppi.
Python 3
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> |
Lähtö
The original string : 4766472069732062657374 The byte converted string is : b'GfG is best', type :
Aika monimutkaisuus:
Binascii.unhexlify()-menetelmän aikamonimutkaisuus on O(n), missä n on syötemerkkijonon pituus.
Kaikkien muiden tämän koodin operaatioiden aikakompleksisuus on O(1).
Siksi tämän koodin yleinen aikamonimutkaisuus on O(n).
Tilan monimutkaisuus:
Tämän koodin tilamonimutkaisuus on O(1), koska se käyttää vain vakiomäärän lisätilaa syötteen koosta riippumatta.
Menetelmä 5: käyttämällä struct.pack()-menetelmää.
Vaiheittainen lähestymistapa
Tuo struct-moduuli koodiisi.
Alusta 'testimerkkijono' -niminen merkkijono arvolla GFG on paras.
Tulosta alkuperäinen merkkijono käyttämällä print-lausetta.
Käytä bytes()-menetelmää merkkijonon muuntamiseen tavuiksi. Välitä 'test_string'- ja 'utf-8'-koodaus parametreina menetelmälle.
Käytä struct.pack()-menetelmää tavun muuntamiseen binääritiedoksi. Välitä muotomerkkijono '10s' ja tavut parametreina menetelmälle. 10s-muotoinen merkkijono osoittaa, että syötetietoja tulee käsitellä merkkijonona, jonka pituus on 10.
Tallenna tulos muuttujaan 'res'.
Tulosta muunnettu tavumerkkijono ja sen tyyppi print-käskyn avulla.
Python 3
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)))> |
Lähtö
The original string : GFG is best The byte converted string is : b'GFG is bes', type :
Aika monimutkaisuus: Bytes()- ja struct.pack()-menetelmien aikamonimutkaisuus on O(n), jossa n on syötemerkkijonon pituus.
Aputila: Bytes()- ja struct.pack()-menetelmien monimutkaisuus on O(n), jossa n on syötemerkkijonon pituus.