Niz v šestnajstiški v Pythonu

String Hexadecimal Python



Šestnajstiško število ima osnovo 16, niz pa lahko predstavimo v šestnajstiški obliki s predpono 0x.

Niz lahko pretvorimo v šestnajstiško z naslednjimi metodami:







  1. Z uporabo metode hex (n)
  2. Z uporabo metode encode ()
  3. Z uporabo metode literal_eval ()

1. način: Uporaba hex ()

Z metodo hex () lahko pretvorimo niz v šestnajstiško. Metoda hex () sprejme parameter v obliki celega števila, zato moramo najprej pretvoriti niz v celo število in nato to vrednost prenesti v metodo hex (), kot je prikazano spodaj:



Primer: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
enajst
12
13
14
petnajst
16
17
18
19
dvajset
enaindvajset
# string_to_hex.py

str = '245FC'

# posredujte str v int (), da ga pretvorite v base16 int

base16INT= int(str, 16)

# natisnite pretvorjeni niz v osnovno šestnajstiško vrednost int

tiskanje('vrednost',base16INT)

tiskanje('vrednost',tip(base16INT))

hex_value= šestnajstiško(base16INT)

tiskanje(hex_value)

# preverjanje vrste vrednosti

tiskanje(tip(hex_value))

Izhod:

1
2
3
4
5
6
7
vrednost148988

vrednost<razred 'int'>

0x245fc

<razred 'str'>

3. vrstica: Ustvarili smo niz za predstavitev.

Vrstica 6: Ta niz posredujemo metodi int () z bazo 16. Zdaj bo ta metoda int () pretvorila niz v šestnajstiško vrednost celega števila.



Vrstica 9: Natisnemo vrednost, ki jo dobimo po pretvorbi niza v celoštevilčno šestnajstiško.





Vrstica 10: Natisnemo tudi vrsto vrednosti, da potrdimo, da je niz zdaj v obliki celega števila.

Vrstica 12: Vemo, da vgrajena hex (n) metoda sprejema celoštevilčno vrednost in pretvori celo število v šestnajstiški niz. Zato moramo niz pretvoriti v celo število, da ga posredujemo v metodo hex (). To vrednost base16INT smo predali metodi hex () in dobili hexadecimalno vrednost hex_value, niz.



Vrstica 13: Natisnemo to pretvorjeno šestnajstiško vrednost.

Vrstica 16: Natisnemo vrsto pretvorjene šestnajstiške vrednosti, ki v izhodu pokaže, da gre za vrsto niza.

Torej, zdaj smo niz pretvorili v šestnajstiško vrednost.

2. način: Pretvorite niz v šestnajstiško s pomočjo encode ()

Običajni niz lahko pretvorimo tudi v šestnajstiški niz, ki nima nobenega šestnajstiškega znaka. Za to moramo pretvoriti niz v bajt z uporabo metode encode (), nato pa lahko niz pretvorimo v šestnajstiško, kot je prikazano spodaj:

1
2
3
4
5
6
7
8
9
10
enajst
12
13
14
petnajst
16
17
18
19
dvajset
enaindvajset
22
2. 3
24
25
# string_to_hex_utf8.py



# pretvorite niz v bajte

str= 'linuxhint'.kodirati('utf-8')



# natisnite pretvorjeni niz v bajte

tiskanje(str)



# pretvorite niz bajtov v šestnajstiški niz

hex_str= str.šestnajstiško()



# natisnite pretvorjeno šestnajstiško vrednost

tiskanje(tip(hex_str))

Izhod:

1
2
3
b'linuxhint'

<razred 'str'>

4. do 7. vrstica: Ustvarili smo niz, ki nima šestnajstiškega znaka. Nato te nize pretvorite v bajte z uporabo metode encode (). Nato natisnemo tiste bajte, ki jih lahko vidimo v izhodni vrstici številka 1.

Vrstice 10 do 13: Metodo hex () pokličemo z operaterjem dot, zdaj pa se bajti pretvorijo v šestnajstiško vrednost niza, ki smo jo potrebovali. Za potrditev vrste niza rezultatov natisnemo samo vrstico 13, izhod pa pokaže, da je v šestnajstiškem nizu.

Metoda 3. Uporaba metode ast.literal_eval ()

Niz lahko pretvorimo tudi v celo število s pomočjo metode knjižnice ast literal_eval. Ta metoda tudi pretvori niz v celo število, da uporabi metodo hex () za pretvorbo niza v šestnajstiški niz. Toda ta metoda sprejema samo 0x znake predpone.

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

odpodružnicauvozliteral_eval

str = '0xAAA'



# pretvorite niz v celo število

convert_str=literal_eval(str)



# natisnite vrednost in vrsto convert_str

tiskanje(convert_str)

tiskanje('tip', tip(convert_str))



# posredujte convert_str v metodo hex ()

hex_value= šestnajstiško(convert_str)

tiskanje(hex_value)



# preverjanje vrste vrednosti

tiskanje(tip(hex_value))

Izhod:

1
2
3
4
5
6
7
2730

tip <razred 'int'>

0xaaa

<razred 'str'>

Vrstice 2 do 10: Metodo literal_eval () uvozimo iz knjižnice ast. Nato ustvarimo niz s predpono 0x. Nato smo ta niz predali metodi literal_eval () in ga pretvorili v celo število. Za potrditev, da je izpis v celoštevilčni obliki, ga natisnemo v vrstico 9. Natisnemo tudi vrsto izpisa, ki kaže, da je celo število.

Vrstice 13 do 17: Poznamo vgrajeno hex (n) metodo, ki sprejema celoštevilsko vrednost in pretvarja celo število v šestnajstiški niz. Zato moramo niz pretvoriti v celo število, da ga posredujemo v metodo hex (). To vrednost convert_str (celo število) smo prenesli v metodo hex () in dobili hexadecimalno vrednost hex_value, niz. Natisnemo to pretvorjeno šestnajstiško vrednost. Natisnemo tudi vrsto pretvorjene šestnajstiške vrednosti, kar kaže, da gre za šestnajstiški niz.

Izjema napake (TypeError):

Včasih bomo pri pretvorbi niza v šestnajstiški niz dobili napake. Razlog za to je metoda hex (), ki za parameter sprejme samo celo število.

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



hex_output= šestnajstiško(string_hex)

tiskanje(hex_output)

Izhod:

1
Napaka tipa:'str' predmetni mogoče razlagatikotcelo število

Zaključek:

Tako smo videli različne metode za pretvorbo niza v šestnajstiški mali niz. Metoda hex () je zelo priljubljena zaradi enostavne uporabe. Včasih pa želimo pretvoriti niz brez uporabe predpone 0x, zato lahko v tem primeru uporabimo metodo bytes encode (), kot smo že videli v članku.

Koda tega članka je na voljo na spodnji povezavi github:

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