Mezikonverze jsou jako obvykle poměrně populární, ale konverze mezi řetězcem na bajty je v dnešní době běžnější, protože pro manipulaci se soubory nebo strojové učení ( Pickle File ) ve velké míře požadujeme, aby byly řetězce převedeny na bajty. Pojďme diskutovat o určitých způsobech, jak to lze provést.
Metoda #1: Použití bajtů (str, enc) Řetězec lze převést na bajty pomocí obecné funkce bajtů. Tato funkce interně odkazuje na knihovnu CPython, která implicitně volá funkci encode pro převod řetězce na zadané kódování.
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)))> |
>
>
odstranit poslední znak z řetězceVýstup :
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
Metoda č. 2: Použití kódování (enc) Nejdoporučovanější metoda k provedení tohoto konkrétního úkolu, pomocí funkce kódování k provedení převodu, protože snižuje jedno další propojení s konkrétní knihovnou, tato funkce ji přímo 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ýstup :
The original string : GFG is best The byte converted string is : b'GFG is best', type :>
Metoda #2: Použití memoryview()
V tomto příkladu voláme metodu encode() v proměnné my_string, abychom ji převedli na bajty pomocí kódování UTF-8. Výsledný objekt bajtů pak předáme funkci memoryview(), která vrátí objekt zobrazení paměti, který poskytuje pohled na základní bajty.
Nakonec voláme metodu tobytes() v objektu zobrazení paměti, abychom vytvořili nový objekt bytes obsahující stejná data. Tento objekt bytes je uložen v proměnné my_bytes a vytištěn na konzoli.
POZNÁMKA: Funkce memoryview() je užitečná v situacích, kdy potřebujete získat přístup k základním bajtům objektu bez jejich kopírování. Nemusí to však být nejúčinnější přístup pro jednoduchý převod řetězce na bajty, protože zahrnuje další režii.
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)> |
>
string.format java řetězec
>Výstup
b'Hello, world!'>
časová složitost: O(n),
prostorová složitost: O(n)
Metoda #3: Použití metody binascii.unhexlify():
Algoritmus:
1.Importujte modul binascii
2. Inicializujte řetězec obsahující hexadecimální reprezentaci bajtů
3. Pomocí metody unhexlify() modulu binascii převeďte hexadecimální řetězec na bajty
4. Vytiskněte převedené bajty a jejich 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> |
>
sloučení řazení java
>Výstup
The original string : 4766472069732062657374 The byte converted string is : b'GfG is best', type :>
Časová náročnost:
Metoda binascii.unhexlify() má časovou složitost O(n), kde n je délka vstupního řetězce.
Všechny ostatní operace v tomto kódu mají časovou složitost O(1).
Celková časová složitost tohoto kódu je tedy O(n).
Prostorová složitost:
Prostorová složitost tohoto kódu je O(1), protože využívá pouze konstantní množství prostoru navíc, bez ohledu na velikost vstupu.
Metoda 5: pomocí metody struct.pack().
Přístup krok za krokem
Importujte modul struct do svého kódu.
Inicializujte řetězec s názvem „test_string“ s hodnotou GFG je nejlepší.
Vytiskněte původní řetězec pomocí příkazu print.
Pomocí metody bytes() převeďte řetězec na bajty. Předejte metodě kódování „test_string“ a „utf-8“ jako parametry.
Pomocí metody struct.pack() převeďte bajty na binární data. Předejte metodě formátovací řetězec „10s“ a bajty jako parametry. Formátový řetězec „10s“ označuje, že se vstupními daty by se mělo zacházet jako s řetězcem o délce 10.
Uložte výsledek do proměnné ‚res‘.
Vytiskněte převedený bajtový řetězec spolu s jeho typem pomocí pří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ýstup
kolik mb v gb
The original string : GFG is best The byte converted string is : b'GFG is bes', type :>
Časová složitost: Časová složitost metod bytes() a struct.pack() je O(n), kde n je délka vstupního řetězce.
Pomocný prostor: Prostorová složitost metod bytes() a struct.pack() je O(n), kde n je délka vstupního řetězce.