logo

Python | Converteix String en bytes

Les conversions entre són, com és habitual, força populars, però la conversió entre una cadena a bytes és més habitual en aquests dies a causa del fet que per gestionar fitxers o aprenentatge automàtic (Fitxer Pickle), necessitem àmpliament que les cadenes es converteixin en bytes. Parlem de certes maneres de fer-ho.

Mètode 1: Ús de bytes (str, enc) La cadena es pot convertir en bytes mitjançant la funció genèrica de bytes. Aquesta funció apunta internament a la biblioteca CPython que crida implícitament la funció de codificació per convertir la cadena a la codificació especificada.



Python 3






cua de prioritats
# 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)))>



>

>

Sortida:

The original string : GFG is best The byte converted string is : b'GFG is best', type :>

Mètode núm. 2: utilitzant codificació (enc) El mètode més recomanat per realitzar aquesta tasca en particular, utilitzant la funció de codificació per fer la conversió, ja que redueix un enllaç addicional a una biblioteca concreta, aquesta funció l'anomena directament.

Python 3


Selecció ordena java



# 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)))>

>

>

Sortida:

The original string : GFG is best The byte converted string is : b'GFG is best', type :>

Mètode 2: Ús de memoryview()

En aquest exemple, estem cridant al mètode encode() a la variable my_string per convertir-la en bytes mitjançant la codificació UTF-8. A continuació, estem passant l'objecte bytes resultant a la funció memoryview(), que retorna un objecte de vista de memòria que proporciona una vista dels bytes subjacents.

Finalment, cridem al mètode tobytes() a l'objecte de vista de memòria per crear un nou objecte bytes que contingui les mateixes dades. Aquest objecte bytes s'emmagatzema a la variable my_bytes i s'imprimeix a la consola.

NOTA: la funció memoryview() és útil per a situacions en què necessiteu accedir als bytes subjacents d'un objecte sense copiar-los. Tanmateix, pot ser que no sigui l'enfocament més eficient per a la conversió simple de cadena a bytes, ja que implica una sobrecàrrega addicional.

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)>

>

>

Sortida

b'Hello, world!'>

complexitat temporal: O(n),

complexitat espacial: O(n)

Mètode #3: utilitzant el mètode binascii.unhexlify():

Algorisme:

llista java de

1.Importa el mòdul binascii
2.Inicialitzar una cadena que contingui la representació hexadecimal de bytes
3.Utilitzeu el mètode unhexlify() del mòdul binascii per convertir la cadena hexadecimal en bytes
4.Imprimeix els bytes convertits i el seu tipus.

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>

>

>

Força de neteja de la memòria cau npm
Sortida

The original string : 4766472069732062657374 The byte converted string is : b'GfG is best', type :>

Complexitat temporal:

El mètode binascii.unhexlify() té una complexitat temporal de O(n), on n és la longitud de la cadena d'entrada.
Totes les altres operacions d'aquest codi tenen una complexitat temporal de O(1).
Per tant, la complexitat temporal global d'aquest codi és O(n).

Complexitat espacial:

La complexitat espacial d'aquest codi és O(1), ja que només utilitza una quantitat constant d'espai addicional, independentment de la mida d'entrada.

Mètode 5: utilitzant el mètode struct.pack().

xarxes i tipus

Enfocament pas a pas

Importeu el mòdul struct al vostre codi.
Inicialitzar una cadena anomenada 'test_string' amb el valor GFG és millor.
Imprimeix la cadena original utilitzant la instrucció print.
Utilitzeu el mètode bytes() per convertir la cadena en bytes. Passeu la codificació 'test_string' i 'utf-8' com a paràmetres al mètode.
Utilitzeu el mètode struct.pack() per convertir els bytes en dades binàries. Passeu la cadena de format '10s' i els bytes com a paràmetres al mètode. La cadena de format '10s' indica que les dades d'entrada s'han de tractar com una cadena de longitud 10.
Emmagatzema el resultat en una variable 'res'.
Imprimiu la cadena de bytes convertida juntament amb el seu tipus mitjançant la instrucció print.

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)))>

>

>

Sortida

The original string : GFG is best The byte converted string is : b'GFG is bes', type :>

Complexitat temporal: la complexitat temporal dels mètodes bytes() i struct.pack() és O(n) on n és la longitud de la cadena d'entrada.

Espai auxiliar: la complexitat de l'espai dels mètodes bytes() i struct.pack() és O(n) on n és la longitud de la cadena d'entrada.