logo

Pitón | Convertir cadena a bytes

Como siempre, las conversiones entre cadenas son bastante populares, pero la conversión entre una cadena a bytes es más común hoy en día debido al hecho de que para manejar archivos o aprendizaje automático (Pickle File), requerimos que las cadenas se conviertan a bytes. Analicemos ciertas formas en que esto se puede realizar.

Método #1: Usar bytes(str, enc) La cadena se puede convertir a bytes utilizando la función de bytes genérica. Esta función apunta internamente a la biblioteca CPython, que implícitamente llama a la función de codificación para convertir la cadena a la codificación especificada.



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



>

>

Producción :

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

Método #2: Usar codificar(enc) El método más recomendado para realizar esta tarea en particular es utilizar la función de codificación para realizar la conversión, ya que reduce un enlace adicional a una biblioteca en particular, esta función la llama directamente.

para bucle en c

Python3


Sistema operativo



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

>

>

Producción :

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

Método #2: Usando Memoryview()

En este ejemplo, llamamos al método encode() en la variable my_string para convertirla a bytes usando la codificación UTF-8. Luego pasamos el objeto de bytes resultante a la función Memoryview(), que devuelve un objeto de vista de memoria que proporciona una vista de los bytes subyacentes.

Finalmente, llamamos al método tobytes() en el objeto de vista de memoria para crear un nuevo objeto de bytes que contenga los mismos datos. Este objeto de bytes se almacena en la variable my_bytes y se imprime en la consola.

NOTA: la función Memoryview() es útil para situaciones en las que necesita acceder a los bytes subyacentes de un objeto sin copiarlos. Sin embargo, puede que no sea el enfoque más eficaz para la conversión simple de cadenas a bytes, ya que implica una sobrecarga adicional.

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

>

negación matemática discreta

>

Producción

b'Hello, world!'>

complejidad del tiempo: O (n),

complejidad del espacio: O (n)

Método #3: Usando el método binascii.unhexlify():

Algoritmo:

1.Importar el módulo binascii
2.Inicializar una cadena que contenga la representación hexadecimal de bytes
3.Utilice el método unhexlify() del módulo binascii para convertir la cadena hexadecimal a bytes.
4.Imprima los bytes convertidos y su tipo.

Python3


javafx



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>

>

>

Producción

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

Complejidad del tiempo:

El método binascii.unhexlify() tiene una complejidad temporal de O(n), donde n es la longitud de la cadena de entrada.
Todas las demás operaciones de este código tienen una complejidad temporal de O(1).
Por lo tanto, la complejidad temporal general de este código es O (n).

Complejidad espacial:

La complejidad espacial de este código es O(1), ya que sólo utiliza una cantidad constante de espacio adicional, independientemente del tamaño de entrada.

Método 5: usar el método struct.pack().

Enfoque paso a paso

Importe el módulo de estructura en su código.
Lo mejor es inicializar una cadena llamada 'test_string' con el valor GFG.
Imprima la cadena original usando la declaración de impresión.
Utilice el método bytes() para convertir la cadena en bytes. Pase la codificación 'test_string' y 'utf-8' como parámetros del método.
Utilice el método struct.pack() para convertir los bytes en datos binarios. Pase la cadena de formato '10s' y los bytes como parámetros del método. La cadena con formato '10' indica que los datos de entrada deben tratarse como una cadena de longitud 10.
Guarde el resultado en una variable 'res'.
Imprima la cadena de bytes convertida junto con su tipo usando la declaración de impresión.

Python3




fila y columna
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)))>

>

>

Producción

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

Complejidad temporal: la complejidad temporal de los métodos bytes() y struct.pack() es O(n), donde n es la longitud de la cadena de entrada.

Espacio auxiliar: la complejidad espacial de los métodos bytes() y struct.pack() es O(n), donde n es la longitud de la cadena de entrada.