Șir la Hexadecimal în Python

String Hexadecimal Python



Hexadecimal are o bază de 16 și putem reprezenta un șir în format hexazecimal folosind prefixul 0x.

Putem converti șirul în hexazecimal folosind următoarele metode:







  1. Folosind metoda hex (n)
  2. Folosind metoda encode ()
  3. Folosind metoda literal_eval ()

Metoda 1: Utilizarea hex ()

Putem converti șirul în hexazecimal folosind metoda hex (). Metoda hex () acceptă parametrul într-o formă întreagă și, mai întâi, trebuie să convertim șirul într-un număr întreg și apoi să trecem acea valoare la metoda hex () așa cum se arată mai jos:



Exemplu: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
unsprezece
12
13
14
cincisprezece
16
17
18
19
douăzeci
douăzeci și unu
# string_to_hex.py

str = „245FC”

# trece str la int () pentru a-l converti în base16 int

baza16INT= int(str, 16)

# tipăriți șirul convertit la valoarea int hexazecimală base16

imprimare('valoare',baza16INT)

imprimare('valoare',tip(baza16INT))

valoare_hex= hex(baza16INT)

imprimare(valoare_hex)

# chcking tipul valorii

imprimare(tip(valoare_hex))

Ieșire:

1
2
3
4
5
6
7
valoare148988

valoare<clasă „int”>

0x245fc

<clasă 'str'>

Linia 3: Am creat un șir pentru demonstrație.

Linia 6: Trecem acel șir la metoda int () cu baza 16. Acum, această metodă int () va converti șirul la valoarea întregului hexazecimal.



Linia 9: Tipărim valoarea pe care o obținem după convertirea șirului în număr hexazecimal întreg.





Linia 10: De asemenea, tipărim tipul de valoare pentru a confirma că șirul este acum sub forma unui număr întreg.

Linia 12: Știm că metoda încorporată hex (n) acceptă valoarea întregului, convertind numărul întreg în șir hexazecimal. De aceea, trebuie să convertim șirul într-un număr întreg pentru a-l trece în metoda hex (). Am trecut acea valoare base16INT la metoda hex () și am obținut hex_value, șir hexadecimal.



Linia 13: Tipărim acea valoare hexazecimală convertită.

Linia 16: Tipărim tipul valorii hexazecimale convertite, care arată în ieșire că este un tip șir.

Deci, acum am convertit șirul într-o valoare hexazecimală.

Metoda 2: convertiți șirul în hexazecimal folosind codificarea ()

De asemenea, putem converti șirul normal într-un șir hexazecimal care nu are niciun caracter hexazecimal. Pentru aceasta, trebuie să convertim șirul în octet folosind metoda encode () și apoi putem converti șirul în hexazecimal așa cum se arată mai jos:

1
2
3
4
5
6
7
8
9
10
unsprezece
12
13
14
cincisprezece
16
17
18
19
douăzeci
douăzeci și unu
22
2. 3
24
25
# string_to_hex_utf8.py



# convertiți șirul în octeți

str= „linuxhint”.codifica(„utf-8”)



# tipăriți șirul convertit în octeți

imprimare(str)



# convertiți octeții șirului în șir hexazecimal

hex_str= str.hex()



# tipăriți tipul valorii hexazecimale convertite

imprimare(tip(hex_str))

Ieșire:

1
2
3
b„linuxhint”

<clasă 'str'>

Linia 4-7: Am creat un șir care nu are niciun caracter hexazecimal. Și apoi convertiți aceste șiruri în octeți folosind metoda encode (). Și apoi, imprimăm acei octeți, pe care îi putem vedea în linia de ieșire numărul 1.

Linia 10-13: Numim metoda hex () folosind operatorul punct, iar acum octeții sunt convertiți în valoarea șirului hexazecimal pe care o solicităm. Pentru a confirma tipul șirului de rezultate, imprimăm doar numărul de linie 13, iar rezultatul arată că este într-un șir de tip hexazecimal.

Metoda 3. Utilizarea metodei ast.literal_eval ()

De asemenea, putem converti șirul într-un număr întreg folosind metoda bibliotecii ast literal_eval. Această metodă convertește, de asemenea, șirul într-un număr întreg pentru a utiliza metoda hex () pentru a converti șirul în șir hexazecimal. Dar această metodă acceptă numai caractere de prefix 0x.

1
2
3
4
5
6
7
8
9
10
unsprezece
12
13
14
cincisprezece
16
17
18
19
douăzeci
douăzeci și unu
22
2. 3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

dinramurăimportliteral_eval

str = „0xAAA”



# convertiți șirul în întreg

convert_str=literal_eval(str)



# tipăriți valoarea și tipul convert_str

imprimare(convert_str)

imprimare('tip', tip(convert_str))



# treceți convert_str la metoda hex ()

valoare_hex= hex(convert_str)

imprimare(valoare_hex)



# chcking tipul valorii

imprimare(tip(valoare_hex))

Ieșire:

1
2
3
4
5
6
7
2730

tip <clasă „int”>

0xaaa

<clasă 'str'>

Linia 2-10: Importăm metoda literal_eval () din biblioteca ast. Apoi creăm un șir cu prefixul 0x. Apoi am trecut acel șir la metoda literal_eval () și l-am convertit în întreg. Pentru a confirma că ieșirea este într-o formă întreagă, o imprimăm în linia numărul 9. De asemenea, tipărim tipul ieșirii, care arată că este un număr întreg.

Linia 13-17: Cunoaștem metoda hex (n) încorporată care acceptă valoarea întregului, convertind numărul întreg în șir hexazecimal. De aceea, trebuie să convertim șirul într-un număr întreg pentru a-l trece în metoda hex (). Am trecut acea valoare convert_str (integer) la metoda hex () și am obținut hex_value, șir hexadecimal. Tipărim acea valoare hexazecimală convertită. Tipărim și tipul valorii hexazecimale convertite, ceea ce arată că este un șir de tip hexazecimal.

Excepție de eroare (TypeError):

Uneori vom primi erori în timp ce convertim șirul într-un șir hexazecimal. Motivul care stă la baza acestui lucru este metoda hex () acceptă doar valoarea întreagă ca parametru.

1
2
3
4
5
6
7
string_hex= „0xFF”



hex_output= hex(string_hex)

imprimare(hex_output)

Ieșire:

1
Eroare de scris:'str' obiectnu poate fi interpretatla fel deun număr întreg

Concluzie:

Deci, am văzut diferite metode pentru a converti șirul într-un șir hexazecimal cu minuscule. Metoda hex () este foarte populară datorită utilizării sale ușoare. Dar, uneori, vrem să convertim șirul fără a utiliza prefixul 0x, astfel încât, în acest caz, putem folosi metoda bytes encode (), așa cum am văzut deja în articol.

Codul acestui articol este disponibil la linkul github de mai jos:

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