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)))> |
on yhtä kuin merkkijono javassa
>
>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)))> |
lajitella arraylist javassa
>
>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
merkkijonotaulukko
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
c++ muuntaa in merkkijonoksi
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.
java tuple
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.