Reťazec na hexadecimálny v Pythone

String Hexadecimal Python



Šestnástkový má základ 16 a reťazec v hexadecimálnom formáte môžeme reprezentovať pomocou predpony 0x.

Reťazec môžeme previesť na hexadecimálny pomocou nasledujúcich metód:







  1. Použitie metódy hex (n)
  2. Použitie metódy encode ()
  3. Použitie metódy literal_eval ()

Metóda 1: Použitie hexu ()

Reťazec môžeme previesť na hexadecimálne pomocou metódy hex (). Metóda hex () prijíma parameter v celočíselnej forme, a preto najskôr musíme reťazec previesť na celé číslo a potom túto hodnotu odovzdať metóde hex (), ako je uvedené nižšie:



Príklad: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
jedenásť
12
13
14
pätnásť
16
17
18
19
dvadsať
dvadsaťjeden
# string_to_hex.py

p = „245FC“

# zadajte reťazec na int (), aby ste ho previedli na base16 int

base16INT= int(p, 16)

# vytlačte konvertovaný reťazec na hexadecimálnu vnútornú hodnotu base16

vytlačiť('hodnota',base16INT)

vytlačiť('hodnota',typ(base16INT))

hex_value= hex(base16INT)

vytlačiť(hex_value)

# zadanie typu hodnoty

vytlačiť(typ(hex_value))

Výkon:

1
2
3
4
5
6
7
hodnotu148988

hodnotu<trieda 'int'>

0x245fc

<trieda 'str'>

Riadok 3: Vytvorili sme reťazec pre demo.

Riadok 6: Tento reťazec odovzdáme metóde int () so základňou 16. Teraz táto metóda int () skonvertuje reťazec na hexadecimálnu celočíselnú hodnotu.



Riadok 9: Vytlačíme hodnotu, ktorú získame po prevode reťazca na celočíselné hexadecimálne číslo.





Riadok 10: Vytlačíme tiež typ hodnoty, aby sme potvrdili, že reťazec je teraz vo forme celého čísla.

12. riadok: Vieme, že vstavaná metóda hex (n) prijíma celočíselnú hodnotu a prevádza ju na hexadecimálny reťazec. Preto musíme reťazec previesť na celé číslo, aby ho bolo možné preniesť do metódy hex (). Túto hodnotu base16INT sme odovzdali metóde hex () a dostali sme hodnotu hex_value, reťazec hexadecimálny.



13. riadok: Vytlačíme prepočítanú hexadecimálnu hodnotu.

16. riadok: Vytlačíme typ prevedenej hexadecimálnej hodnoty, ktorý na výstupe ukáže, že ide o typ reťazca.

Teraz sme reťazec previedli na hexadecimálnu hodnotu.

Metóda 2: Konvertujte reťazec na hexadecimálne pomocou kódovania ()

Normálny reťazec môžeme tiež previesť na hexadecimálny reťazec, ktorý nemá žiadny hexadecimálny znak. Na to musíme reťazec previesť na bajt pomocou metódy encode () a potom môžeme reťazec previesť na hexadecimálne, ako je uvedené nižšie:

1
2
3
4
5
6
7
8
9
10
jedenásť
12
13
14
pätnásť
16
17
18
19
dvadsať
dvadsaťjeden
22
2. 3
24
25
# string_to_hex_utf8.py



# preveďte reťazec na bajty

p= 'linuxhint'.zakódovať('utf-8')



# vytlačte konvertovaný reťazec na bajty

vytlačiť(p)



# previesť bajty reťazcov na hexadecimálny reťazec

hex_str= p.hex()



# vytlačte prevedený typ hexadecimálnej hodnoty

vytlačiť(typ(hex_str))

Výkon:

1
2
3
b'linuxhint'

<trieda 'str'>

Riadok 4 až 7: Vytvorili sme reťazec, ktorý nemá žiadny hexadecimálny znak. A potom tieto reťazce preveďte na bajty pomocou metódy encode (). A potom vytlačíme tie bajty, ktoré vidíme na výstupnom riadku číslo 1.

Riadok 10 až 13: Metódu hex () nazývame pomocou bodkového operátora a teraz sú bajty prevedené na požadovanú hodnotu hexadecimálneho reťazca. Na potvrdenie typu výsledného reťazca vytlačíme iba riadok číslo 13 a výstup ukáže, že je v reťazci hexadecimálneho typu.

Metóda 3. Použitie metódy ast.literal_eval ()

Reťazec môžeme tiež previesť na celé číslo pomocou metódy knižnice ast literal_eval. Táto metóda tiež prevádza reťazec na celé číslo, aby sa pomocou metódy hex () mohol reťazec previesť na hexadecimálny reťazec. Táto metóda však akceptuje iba 0x znakov predpony.

1
2
3
4
5
6
7
8
9
10
jedenásť
12
13
14
pätnásť
16
17
18
19
dvadsať
dvadsaťjeden
22
2. 3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

odpobočkaimportliteral_eval

p = „0xAAA“



# preveďte reťazec na celé číslo

konvertovať_str=literal_eval(p)



# vytlačte hodnotu a typ súboru convert_str

vytlačiť(konvertovať_str)

vytlačiť('typ', typ(konvertovať_str))



# odovzdajte metódu convert_str metóde hex ()

hex_value= hex(konvertovať_str)

vytlačiť(hex_value)



# zadanie typu hodnoty

vytlačiť(typ(hex_value))

Výkon:

1
2
3
4
5
6
7
2730

typ <trieda 'int'>

0xaaa

<trieda 'str'>

Riadok 2 až 10: Metódu literal_eval () importujeme z ast knižnice. Potom vytvoríme reťazec s predponou 0x. Potom sme tento reťazec odovzdali metóde literal_eval () a skonvertovali sme ho na celé číslo. Aby sme potvrdili, že výstup je v celočíselnom tvare, vytlačíme ho v riadku číslo 9. Vytlačíme aj typ výstupu, ktorý ukazuje, že ide o celé číslo.

Riadok 13 až 17: Poznáme vstavanú metódu hex (n), ktorá prijíma celočíselnú hodnotu a prevádza celé číslo na hexadecimálny reťazec. Preto musíme reťazec previesť na celé číslo, aby ho bolo možné preniesť do metódy hex (). Túto hodnotu convert_str (celé číslo) sme odovzdali metóde hex () a dostali sme hodnotu hex_value, reťazec hexadecimálny. Vytlačíme prepočítanú hexadecimálnu hodnotu. Vytlačíme tiež typ prevedenej hexadecimálnej hodnoty, ktorý ukazuje, že ide o reťazcový hexadecimálny typ.

Výnimka chyby (TypeError):

Niekedy sa pri prevode reťazca na hexadecimálny reťazec vyskytnú chyby. Dôvodom je metóda hex (), ktorá ako parameter prijíma iba celočíselnú hodnotu.

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



hex_output= hex(string_hex)

vytlačiť(hex_output)

Výkon:

1
Zadajte chybu:'str' predmetnemožno interpretovaťakocelé číslo

Záver:

Videli sme teda rôzne metódy na prevod reťazca na hexadecimálny malý reťazec. Metóda hex () je veľmi obľúbená kvôli jednoduchému použitiu. Niekedy však chceme reťazec previesť bez použitia predpony 0x, takže v takom prípade môžeme použiť metódu bytes encode (), ako sme už v článku videli.

Kód tohto článku je dostupný na nasledujúcom odkaze github:

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