Heksadecimalna baza ima 16, a niz možemo prikazati u heksadecimalnom formatu pomoću prefiksa 0x.
Niz možemo pretvoriti u heksadecimalni pomoću sljedećih metoda:
- Korištenjem hex (n) metode
- Korištenjem metode encode ()
- Upotrebom metode literal_eval ()
Metoda 1: Korištenje hex ()
Niz možemo pretvoriti u heksadecimalni pomoću hex () metode. Metoda hex () prihvaća parametar u obliku cijelog broja, a za to prvo moramo pretvoriti niz u cijeli broj, a zatim proslijediti tu vrijednost u metodu hex () kao što je prikazano u nastavku:
Primjer: string_to_hex.py
1 2 3 4 5 6 7 8 9 10 jedanaest 12 13 14 petnaest 16 17 18 19 dvadeset dvadeset i jedan | # string_to_hex.py str = '245FC' # proslijedi str u int () da ga pretvori u base16 int baza16INT= int(str, 16) # ispišite pretvoreni niz u heksadecimalnu int vrijednost base16 ispisati('vrijednost',baza16INT) ispisati('vrijednost',tip(baza16INT)) hex_value= šesterokutni(baza16INT) ispisati(hex_value) # provjera vrste vrijednosti ispisati(tip(hex_value)) |
Izlaz:
1 2 3 4 5 6 7 | vrijednost148988 vrijednost<razred 'int'> 0x245fc <razred 'str'> |
3. redak: Stvorili smo niz za demonstraciju.
Red 6: Taj niz prosljeđujemo int () metodi s bazom 16. Sada će ova int () metoda pretvoriti niz u heksadecimalnu cijelu vrijednost.
Redak 9: Ispisujemo vrijednost koju dobijemo nakon pretvaranja niza u heksadecimalni cijeli broj.
Red 10: Također ispisujemo vrstu vrijednosti kako bismo potvrdili da je niz sada u obliku cijelog broja.
Redak 12: Znamo da ugrađena hex (n) metoda prihvaća cijelu vrijednost pretvarajući cijeli broj u heksadecimalni niz. Zato moramo pretvoriti niz u cijeli broj da bismo ga proslijedili u hex () metodu. Tu vrijednost base16INT proslijedili smo metodi hex () i dobili hexadecimalnu vrijednost hex_value, string.
Redak 13: Ispisujemo tu pretvorenu heksadecimalnu vrijednost.
Redak 16: Ispisujemo vrstu pretvorene heksadecimalne vrijednosti, koja u ispisu pokazuje da se radi o vrsti niza.
Dakle, sada smo pretvorili niz u heksadecimalnu vrijednost.
Metoda 2: Pretvorite niz u heksadecimalni pomoću encode ()
Također možemo pretvoriti normalni niz u heksadecimalni niz koji nema heksadecimalni znak. Za to moramo pretvoriti niz u bajt pomoću metode encode (), a zatim možemo pretvoriti niz u heksadecimalni kao što je prikazano u nastavku:
1 2 3 4 5 6 7 8 9 10 jedanaest 12 13 14 petnaest 16 17 18 19 dvadeset dvadeset i jedan 22 2. 3 24 25 | # string_to_hex_utf8.py # pretvoriti niz u bajtove str= 'linuxhint'.kodirati('utf-8') # ispisati pretvoreni niz u bajte ispisati(str) # pretvoriti nizove bajtova u heksadecimalni niz hex_str= str.šesterokutni() # ispisati pretvorenu heksadecimalnu vrstu vrijednosti ispisati(tip(hex_str)) |
Izlaz:
1 2 3 | b'linuxhint' <razred 'str'> |
Redci 4 do 7: Napravili smo niz koji nema heksadecimalni znak. A zatim pretvorite te nizove u bajtove pomoću metode encode (). Zatim ispisujemo te bajtove koje možemo vidjeti u izlaznom retku broj 1.
Redci 10 do 13: Metodu hex () pozivamo pomoću točkastog operatora, a sada se bajtovi pretvaraju u heksadecimalnu vrijednost niza koja nam je potrebna. Kako bismo potvrdili vrstu niza rezultata, samo ispisujemo red broj 13, a izlaz pokazuje da je u nizu heksadecimalnog tipa.
Metoda 3. Korištenjem metode ast.literal_eval ()
Također možemo pretvoriti niz u cijeli broj pomoću metode biblioteke ast literal_eval. Ova metoda također pretvara niz u cijeli broj pomoću hex () metode za pretvaranje niza u heksadecimalni niz. Ali ova metoda prihvaća samo 0x znakove prefiksa.
1 2 3 4 5 6 7 8 9 10 jedanaest 12 13 14 petnaest 16 17 18 19 dvadeset dvadeset i jedan 22 2. 3 24 25 26 27 28 29 30 31 32 33 | # string_to_hex_utf8.py izpodružnicauvozliteral_eval str = '0xAAA' # pretvoriti niz u cijeli broj pretvoriti_str=literal_eval(str) # ispišite vrijednost i vrstu convert_str ispisati(pretvoriti_str) ispisati('tip', tip(pretvoriti_str)) # proslijediti convert_str u hex () metodu hex_value= šesterokutni(pretvoriti_str) ispisati(hex_value) # provjera vrste vrijednosti ispisati(tip(hex_value)) |
Izlaz:
1 2 3 4 5 6 7 | 2730 tip <razred 'int'> 0xaaa <razred 'str'> |
Redci 2 do 10: Uvozimo metodu literal_eval () iz biblioteke ast. Zatim stvaramo niz s prefiksom 0x. Zatim smo taj niz proslijedili metodi literal_eval () i pretvorili u cijeli broj. Kako bismo potvrdili da je izlaz u cjelobrojnom obliku, ispisujemo ga u red broj 9. Također ispisujemo vrstu izlaza koji pokazuje da je cijeli broj.
Redci 13 do 17: Znamo ugrađenu hex (n) metodu koja prihvaća cijelu vrijednost, pretvarajući cijeli broj u heksadecimalni niz. Zato moramo pretvoriti niz u cijeli broj da bismo ga proslijedili u hex () metodu. Tu vrijednost convert_str (cijeli broj) smo prenijeli u hex () metodu i dobili hexadecimalnu vrijednost hex_value, string. Ispisujemo tu pretvorenu heksadecimalnu vrijednost. Ispisujemo i vrstu pretvorene heksadecimalne vrijednosti, što pokazuje da se radi o heksadecimalnoj vrsti niza.
Izuzetak pogreške (TypeError):
Ponekad ćemo dobiti pogreške prilikom pretvaranja niza u heksadecimalni niz. Razlog tome je hex () metoda koja prihvaća samo cijelu vrijednost kao parametar.
1 2 3 4 5 6 7 | string_hex= '0xFF' hex_output= šesterokutni(string_hex) ispisati(hex_output) |
Izlaz:
1 | TypeError:'str' objektne može se tumačitikaocijeli broj |
Zaključak:
Dakle, vidjeli smo različite metode za pretvaranje niza u heksadecimalni mali niz. Metoda hex () vrlo je popularna zbog svoje jednostavne uporabe. No, ponekad želimo pretvoriti niz bez korištenja prefiksa 0x, pa u tom slučaju možemo upotrijebiti metodu bytes encode (), kao što smo već vidjeli u članku.
Kod ovog članka dostupan je na donjoj github poveznici: