Š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:
- Z uporabo metode hex (n)
- Z uporabo metode encode ()
- 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: