logo

Pitone | Converti stringa in byte

Le conversioni inter sono come al solito piuttosto popolari, ma la conversione da una stringa a byte è più comune al giorno d'oggi perché per la gestione di file o l'apprendimento automatico (Pickle File), è ampiamente necessario che le stringhe vengano convertite in byte. Discutiamo alcuni modi in cui ciò può essere eseguito.

Metodo n. 1: utilizzo di byte (str, enc) La stringa può essere convertita in byte utilizzando la funzione byte generica. Questa funzione punta internamente alla libreria CPython che chiama implicitamente la funzione encode per convertire la stringa nella codifica specificata.



Python3


materiale angolare





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



>

>

Produzione :

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

Metodo n. 2: utilizzo di encode(enc) Il metodo più consigliato per eseguire questa particolare attività, utilizzando la funzione encode per eseguire la conversione, poiché riduce un collegamento aggiuntivo a una particolare libreria, questa funzione lo chiama direttamente.

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

>

>

Produzione :

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

Metodo n. 2: utilizzo di memoryview()

In questo esempio, chiameremo il metodo encode() sulla variabile my_string per convertirla in byte utilizzando la codifica UTF-8. Quindi passiamo l'oggetto byte risultante alla funzione memoryview(), che restituisce un oggetto memory view che fornisce una vista dei byte sottostanti.

Infine, chiameremo il metodo tobytes() sull'oggetto memory view per creare un nuovo oggetto bytes contenente gli stessi dati. Questo oggetto bytes viene memorizzato nella variabile my_bytes e stampato sulla console.

NOTA: la funzione memoryview() è utile per le situazioni in cui è necessario accedere ai byte sottostanti di un oggetto senza copiarli. Tuttavia, potrebbe non essere l'approccio più efficiente per la semplice conversione da stringa a byte, poiché comporta un sovraccarico aggiuntivo.

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

>

>

Produzione

b'Hello, world!'>

complessità temporale: O(n),

complessità spaziale: O(n)

Metodo n. 3: utilizzo del metodo binascii.unhexlify():

Algoritmo:

1.Importa il modulo binascii
2.Inizializzare una stringa contenente la rappresentazione esadecimale dei byte
3.Utilizzare il metodo unhexlify() del modulo binascii per convertire la stringa esadecimale in byte
4.Stampa i byte convertiti e il loro tipo.

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>

>

>

Produzione

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

Complessità temporale:

javatpoint java

Il metodo binascii.unhexlify() ha una complessità temporale di O(n), dove n è la lunghezza della stringa di input.
Tutte le altre operazioni in questo codice hanno una complessità temporale pari a O(1).
Pertanto, la complessità temporale complessiva di questo codice è O(n).

Complessità spaziale:

La complessità spaziale di questo codice è O(1), poiché utilizza solo una quantità costante di spazio aggiuntivo, indipendentemente dalla dimensione dell'input.

Metodo 5: utilizzando il metodo struct.pack().

Approccio graduale

Importa il modulo struct nel tuo codice.
Inizializzare una stringa denominata 'test_string' con il valore GFG è la cosa migliore.
Stampa la stringa originale utilizzando l'istruzione print.
Utilizzare il metodo bytes() per convertire la stringa in byte. Passa la codifica 'test_string' e 'utf-8' come parametri al metodo.
Utilizzare il metodo struct.pack() per convertire i byte in dati binari. Passa la stringa di formato '10s' e i byte come parametri al metodo. La stringa di formato '10' indica che i dati di input devono essere trattati come una stringa di lunghezza 10.
Memorizza il risultato in una variabile 'res'.
Stampa la stringa di byte convertita insieme al suo tipo utilizzando l'istruzione 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)))>

>

>

Produzione

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

Complessità temporale: la complessità temporale dei metodi bytes() e struct.pack() è O(n) dove n è la lunghezza della stringa di input.

Spazio ausiliario: la complessità dello spazio dei metodi bytes() e struct.pack() è O(n) dove n è la lunghezza della stringa di input.