Stringa in esadecimale in Python

String Hexadecimal Python



L'esadecimale ha base 16 e possiamo rappresentare una stringa in formato esadecimale utilizzando il prefisso 0x.

Possiamo convertire la stringa in esadecimale utilizzando i seguenti metodi:







  1. Usando il metodo hex(n)
  2. Utilizzo del metodo encode()
  3. Usando il metodo literal_eval()

Metodo 1: utilizzando l'esadecimale ()

Possiamo convertire la stringa in esadecimale usando il metodo hex(). Il metodo hex() accetta il parametro in forma intera, e per questo prima dobbiamo convertire la stringa in un intero e poi passare quel valore al metodo hex() come mostrato di seguito:



Esempio: stringa_in_esadecimale.py

1
2
3
4
5
6
7
8
9
10
undici
12
13
14
quindici
16
17
18
19
venti
ventuno
# stringa_in_esadecimale.py

P = '245FC'

# passa str a int() per convertirlo in base16 int

base16INT= int(P, 16)

# stampa la stringa convertita in base16 esadecimale int value

Stampa('valore',base16INT)

Stampa('valore',genere(base16INT))

valore_esadecimale= esadecimale(base16INT)

Stampa(valore_esadecimale)

# controllando il tipo del valore

Stampa(genere(valore_esadecimale))

Produzione:

1
2
3
4
5
6
7
valore148988

valore<classe 'int'>

0x245fc

<classe 'str'>

Riga 3: abbiamo creato una stringa per la demo.

Riga 6: Passiamo quella stringa al metodo int() con la base 16. Ora, questo metodo int() convertirà la stringa nel valore intero esadecimale.



Riga 9: Stampiamo il valore che otteniamo dopo aver convertito la stringa in un intero esadecimale.





Riga 10: Stampiamo anche il tipo di valore per confermare che la stringa è ora nella forma di un numero intero.

Riga 12: Sappiamo che il metodo hex(n) integrato accetta il valore intero, convertendo l'intero nella stringa esadecimale. Ecco perché dobbiamo convertire la stringa in un numero intero per passarla al metodo hex(). Abbiamo passato quel valore base16INT al metodo hex() e abbiamo ottenuto hex_value, stringa esadecimale.



Riga 13: Stampiamo quel valore esadecimale convertito.

Riga 16: Stampiamo il tipo del valore esadecimale convertito, che mostra nell'output che è un tipo stringa.

Quindi, ora abbiamo convertito la stringa in un valore esadecimale.

Metodo 2: convertire la stringa in esadecimale utilizzando encode()

Possiamo anche convertire la stringa normale in una stringa esadecimale che non ha alcun carattere esadecimale. Per questo, dobbiamo convertire la stringa in byte usando il metodo encode(), quindi possiamo convertire la stringa in esadecimale come mostrato di seguito:

1
2
3
4
5
6
7
8
9
10
undici
12
13
14
quindici
16
17
18
19
venti
ventuno
22
2. 3
24
25
# string_to_hex_utf8.py



# converte la stringa in byte

P= 'linuxhint'.codificare('utf-8')



# stampa la stringa convertita in byte

Stampa(P)



# converte i byte della stringa nella stringa esadecimale

hex_str= P.esadecimale()



# stampa il tipo di valore esadecimale convertito

Stampa(genere(hex_str))

Produzione:

1
2
3
B'linuxhint'

<classe 'str'>

Riga da 4 a 7: Abbiamo creato una stringa che non ha alcun carattere esadecimale. E poi converti quelle stringhe in byte usando il metodo encode(). E poi, stampiamo quei byte, che possiamo vedere nella riga di output numero 1.

Riga da 10 a 13: Chiamiamo il metodo hex() utilizzando l'operatore punto e ora i byte vengono convertiti nel valore di stringa esadecimale richiesto. Per confermare il tipo della stringa di risultato, stampiamo semplicemente il numero di riga 13 e l'output mostra che è in un tipo esadecimale di stringa.

Metodo 3. Utilizzo del metodo ast.literal_eval()

Possiamo anche convertire la stringa in un intero usando il metodo della libreria ast literal_eval. Questo metodo converte anche la stringa in un numero intero per utilizzare il metodo hex() per convertire la stringa in stringa esadecimale. Ma questo metodo accetta solo caratteri di prefisso 0x.

1
2
3
4
5
6
7
8
9
10
undici
12
13
14
quindici
16
17
18
19
venti
ventuno
22
2. 3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

a partire dalramoimportarevalore_letterale

P = '0xAAA'



# converte la stringa in intero

convert_str=valore_letterale(P)



# stampa il valore e il tipo di convert_str

Stampa(convert_str)

Stampa('genere', genere(convert_str))



# passa il convert_str al metodo hex()

valore_esadecimale= esadecimale(convert_str)

Stampa(valore_esadecimale)



# controllando il tipo del valore

Stampa(genere(valore_esadecimale))

Produzione:

1
2
3
4
5
6
7
2730

genere <classe 'int'>

0xaaa

<classe 'str'>

Riga da 2 a 10: Importiamo il metodo literal_eval() dalla libreria ast. Quindi creiamo una stringa con il prefisso 0x. Quindi abbiamo passato quella stringa al metodo literal_eval() e l'abbiamo convertita nell'intero. Per confermare che l'output è in forma intera, lo stampiamo nella riga numero 9. Stampiamo anche il tipo dell'output, che mostra che è un numero intero.

Linea 13-17: Conosciamo il metodo hex(n) integrato che accetta il valore intero, convertendo l'intero nella stringa esadecimale. Ecco perché dobbiamo convertire la stringa in un numero intero per passarla al metodo hex(). Abbiamo passato quel valore convert_str(integer) al metodo hex() e abbiamo ottenuto hex_value, stringa esadecimale. Stampiamo quel valore esadecimale convertito. Stampiamo anche il tipo del valore esadecimale convertito, che mostra che si tratta di un tipo esadecimale stringa.

Eccezione errore (TypeError):

A volte otterremo errori durante la conversione della stringa in una stringa esadecimale. Il motivo è che il metodo hex() accetta solo il valore intero come parametro.

1
2
3
4
5
6
7
string_hex= '0xFF'



hex_output= esadecimale(string_hex)

Stampa(hex_output)

Produzione:

1
TypeError:'str' oggettonon può essere interpretatocomeun intero

Conclusione:

Quindi, abbiamo visto diversi metodi per convertire la stringa in una stringa esadecimale minuscola. Il metodo hex() è molto popolare per la sua facilità d'uso. Ma a volte, vogliamo convertire la stringa senza usare il prefisso 0x, quindi in quel caso possiamo usare il metodo bytes encode(), come abbiamo già visto nell'articolo.

Il codice di questo articolo è disponibile al seguente link github:

https://github.com/shekharpandey89/string-to-hex-conversion