Cadena a Hexadecimal a Python

String Hexadecimal Python



L’hexadecimal té una base de 16 i podem representar una cadena en format hexadecimal mitjançant el prefix 0x.

Podem convertir la cadena a hexadecimal utilitzant els mètodes següents:







  1. Mitjançant el mètode hex (n)
  2. Utilitzant el mètode encode ()
  3. Utilitzant el mètode literal_eval ()

Mètode 1: utilitzar l'hex ()

Podem convertir la cadena a hexadecimal mitjançant el mètode hex (). El mètode hex () accepta el paràmetre en forma sencera i, per a això, primer hem de convertir la cadena en un enter i després passar aquest valor al mètode hex () com es mostra a continuació:



Exemple: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# string_to_hex.py

pàg = '245FC'

# passa el str a int () per convertir-lo en base16 int

base16INT= int(pàg, 16)

# imprimeix la cadena convertida al valor int hexadecimal base16

imprimir('valor',base16INT)

imprimir('valor',tipus(base16INT))

valor_hex= hex(base16INT)

imprimir(valor_hex)

# chcking el tipus de valor

imprimir(tipus(valor_hex))

Sortida:

1
2
3
4
5
6
7
valor148.988

valor<classe 'int'>

0x245fc

<classe 'str'>

Línia 3: hem creat una cadena per a la demostració.

Línia 6: Passem aquesta cadena al mètode int () amb la base 16. Ara, aquest mètode int () convertirà la cadena al valor enter hexadecimal.



Línia 9: Imprimim el valor que obtenim després de convertir la cadena en hexadecimal sencer.





Línia 10: També imprimim el tipus de valor per confirmar que ara la cadena té la forma d’un nombre enter.

Línia 12: Sabem que el mètode integrat hex (n) accepta el valor enter convertint l’enter a la cadena hexadecimal. Per això, hem de convertir la cadena en un enter per passar-la al mètode hex (). Vam passar aquest valor base16INT al mètode hex () i vam obtenir el hex_value, cadena hexadecimal.



Línia 13: Imprimim aquest valor hexadecimal convertit.

Línia 16: Imprimim el tipus de valor hexadecimal convertit, que mostra a la sortida que és un tipus de cadena.

Per tant, ara hem convertit la cadena en un valor hexadecimal.

Mètode 2: converteix la cadena en hexadecimal mitjançant el codi ()

També podem convertir la cadena normal en una cadena hexadecimal que no tingui cap caràcter hexadecimal. Per a això, hem de convertir la cadena en bytes mitjançant el mètode encode () i, a continuació, podem convertir la cadena en hexadecimal com es mostra a continuació:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# string_to_hex_utf8.py



# converteix la cadena a bytes

pàg= 'linuxhint'.codificar('utf-8')



# imprimeix la cadena convertida a bytes

imprimir(pàg)



# converteix els bytes de la cadena a la cadena hexadecimal

hex_str= pàg.hex()



# imprimeix el tipus de valor hexadecimal convertit

imprimir(tipus(hex_str))

Sortida:

1
2
3
b'linuxhint'

<classe 'str'>

Línia 4 a 7: Hem creat una cadena que no té cap caràcter hexadecimal. I després converteix aquestes cadenes en bytes mitjançant el mètode encode (). I després, imprimim aquests bytes, que podem veure a la línia de sortida número 1.

Línia 10 a 13: Anomenem el mètode hex () mitjançant l’operador de punts i ara els bytes es converteixen al valor de cadena hexadecimal que necessitem. Per confirmar el tipus de cadena de resultats, simplement imprimim la línia número 13 i la sortida mostra que es troba en un tipus hexadecimal de cadena.

Mètode 3. Utilitzant el mètode ast.literal_eval ()

També podem convertir la cadena en un enter mitjançant el mètode de la biblioteca ast literal_eval. Aquest mètode també converteix la cadena en un enter per utilitzar el mètode hex () per convertir la cadena en cadena hexadecimal. Però aquest mètode només accepta caràcters de prefix 0x.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

des debrancaimportacióliteral_eval

pàg = '0xAAA'



# converteix la cadena a l’enter

convertir_str=literal_eval(pàg)



# imprimeix el valor i el tipus del fitxer convert_str

imprimir(convertir_str)

imprimir('tipus', tipus(convertir_str))



# passa el convert_str al mètode hex ()

valor_hex= hex(convertir_str)

imprimir(valor_hex)



# chcking el tipus de valor

imprimir(tipus(valor_hex))

Sortida:

1
2
3
4
5
6
7
2730

tipus <classe 'int'>

0xaaa

<classe 'str'>

Línia 2 a 10: Importem el mètode literal_eval () de la biblioteca ast. A continuació, creem una cadena amb el prefix 0x. Després vam passar aquesta cadena al mètode literal_eval () i la vam convertir a l’enter. Per confirmar que la sortida està en forma sencera, la imprimim en la línia número 9. També imprimim el tipus de sortida, que mostra que és un nombre enter.

Línia 13 a 17: Coneixem el mètode incorporat hex (n) que accepta el valor enter, convertint l’enter a la cadena hexadecimal. Per això, hem de convertir la cadena en un enter per passar-la al mètode hex (). Hem passat aquest valor convert_str (enter) al mètode hex () i hem obtingut el valor hex_value, cadena hexadecimal. Imprimim aquest valor hexadecimal convertit. Imprimim també el tipus de valor hexadecimal convertit, que mostra que és un tipus hexadecimal de cadena.

Excepció d'error (TypeError):

De vegades obtindrem errors en convertir la cadena en una cadena hexadecimal. La raó darrere d’això és el mètode hex () que només accepta el valor enter com a paràmetre.

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



sortida_hex= hex(cadena_hex)

imprimir(sortida_hex)

Sortida:

1
TypeError:'str' objecteno es pot interpretarcomun enter

Conclusió:

Per tant, hem vist diferents mètodes per convertir la cadena en una cadena minúscula hexadecimal. El mètode hex () és molt popular pel seu fàcil ús. Però, de vegades, volem convertir la cadena sense utilitzar el prefix 0x, de manera que en aquest cas podem utilitzar el mètode bytes encode (), com ja hem vist a l'article.

El codi d’aquest article està disponible a l’enllaç següent de github:

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