Heksadesimaaliluvun kanta on 16, ja voimme esittää merkkijonon heksadesimaalimuodossa käyttämällä etuliitettä 0x.
Voimme muuntaa merkkijonon heksadesimaaliksi seuraavilla tavoilla:
- Käyttämällä hex (n) -menetelmää
- Encode () -menetelmän käyttäminen
- Käyttämällä literal_eval () -menetelmää
Menetelmä 1: Hex ()
Voimme muuntaa merkkijonon heksadesimaaliksi käyttämällä hex () -menetelmää. Hex () -menetelmä hyväksyy parametrin kokonaislukumuotona, ja sitä varten meidän on ensin muunnettava merkkijono kokonaisluvuksi ja välitettävä sitten arvo hex () -menetelmälle alla esitetyllä tavalla:
Esimerkki: string_to_hex.py
1 2 3 4 5 6 7 8 9 10 yksitoista 12 13 14 viisitoista 16 17 18 19 kaksikymmentä kaksikymmentäyksi | # string_to_hex.py s = '245FC' # siirrä str int (): lle muuntaaksesi sen base16 int: ksi base16INT= int(s, 16) # tulosta muunnettu merkkijono base16 heksadesimaaliseksi int -arvoksi Tulosta('arvo',base16INT) Tulosta('arvo',tyyppi(base16INT)) hex_value= hex(base16INT) Tulosta(hex_value) # arvotyypin tarkistaminen Tulosta(tyyppi(hex_value)) |
Lähtö:
1 2 3 4 5 6 7 | arvo148988 arvo<luokka 'int'> 0x245fc <luokka 'str'> |
Rivi 3: Loimme merkkijonon esittelyä varten.
Rivi 6: Välitämme tämän merkkijonon int () -menetelmälle kanta 16. Nyt tämä int () -menetelmä muuntaa merkkijonon heksadesimaaliluvuksi.
Rivi 9: Tulostamme arvon, jonka saamme, kun merkkijono on muutettu kokonaislukuun heksadesimaaliksi.
Rivi 10: Tulostamme myös arvotyypin vahvistaaksemme, että merkkijono on nyt kokonaisluku.
Rivi 12: Tiedämme, että sisäänrakennettu heksadesimaali (n) hyväksyy kokonaislukuarvon ja muuntaa kokonaisluvun heksadesimaalijonoksi. Siksi meidän on muutettava merkkijono kokonaisluvuksi, jotta se siirretään hex () -menetelmään. Välitimme tämän base16INT -arvon hex () -menetelmälle ja saimme hex_value, merkkijonon heksadesimaalin.
Rivi 13: Tulostamme muunnetun heksadesimaaliluvun.
Rivi 16: Tulostamme muunnetun heksadesimaaliarvon tyypin, joka näyttää tulostuksessa merkkijonotyypin.
Joten nyt muutimme merkkijonon heksadesimaaliseksi.
Tapa 2: Muunna merkkijono heksadesimaaliksi käyttämällä koodia ()
Voimme myös muuntaa normaalin merkkijonon heksadesimaalijonoksi, jossa ei ole heksadesimaalimerkkiä. Tätä varten meidän on muunnettava merkkijono tavuksi käyttäen menetelmää encode (), ja sitten voimme muuntaa merkkijonon heksadesimaaliksi alla esitetyllä tavalla:
1 2 3 4 5 6 7 8 9 10 yksitoista 12 13 14 viisitoista 16 17 18 19 kaksikymmentä kaksikymmentäyksi 22 2. 3 24 25 | # string_to_hex_utf8.py # muuntaa merkkijonon tavuiksi s= 'linuxhint'.koodata('utf-8') # tulosta muunnettu merkkijono tavuiksi Tulosta(s) # muuntaa merkkijonon tavut heksadesimaaliluvuksi hex_str= s.hex() # tulosta muunnettu heksadesimaalinen arvotyyppi Tulosta(tyyppi(hex_str)) |
Lähtö:
1 2 3 | b'linuxhint' <luokka 'str'> |
Rivi 4-7: Loimme merkkijonon, jossa ei ole heksadesimaalimerkkiä. Muunna sitten nämä merkkijonot tavuiksi encode () -menetelmällä. Ja sitten tulostamme ne tavut, jotka voimme nähdä tulostusrivillä 1.
Rivit 10-13: Kutsumme hex () -menetelmää pisteoperaattorilla, ja nyt tavut muunnetaan vaadittuun heksadesimaalijonoarvoon. Tulosmerkkijonon tyypin vahvistamiseksi tulostamme vain rivinumeron 13, ja tulos osoittaa, että se on merkkijonon heksadesimaalinen.
Menetelmä 3. Ast.literal_eval () -menetelmää käyttäen
Voimme myös muuntaa merkkijonon kokonaisluvuksi käyttämällä ast -kirjastomenetelmää literal_eval. Tämä menetelmä muuntaa merkkijonon myös kokonaisluvuksi hex () -menetelmän avulla merkkijonon heksadesimaaliluvuksi. Mutta tämä menetelmä hyväksyy vain 0x -etuliitemerkit.
1 2 3 4 5 6 7 8 9 10 yksitoista 12 13 14 viisitoista 16 17 18 19 kaksikymmentä kaksikymmentäyksi 22 2. 3 24 25 26 27 28 29 30 31 32 33 | # string_to_hex_utf8.py alkaenhaaratuontiliteral_eval s = '0xAAA' # muuntaa merkkijonon kokonaisluvuksi convert_str=literal_eval(s) # tulosta arvo ja tyyppi convert_str Tulosta(convert_str) Tulosta('tyyppi', tyyppi(convert_str)) # siirtää convert_str hex () -menetelmään hex_value= hex(convert_str) Tulosta(hex_value) # arvotyypin tarkistaminen Tulosta(tyyppi(hex_value)) |
Lähtö:
1 2 3 4 5 6 7 | 2730 tyyppi <luokka 'int'> 0xaaa <luokka 'str'> |
Rivi 2-10: Tuomme menetelmän literal_eval () ast -kirjastosta. Sitten luomme merkkijonon etuliitteellä 0x. Sitten välitimme merkkijonon literal_eval () -metodille ja muutimme sen kokonaislukuksi. Vahvistaaksemme, että tulos on kokonaisluku, tulostamme sen riville 9. Tulostamme myös tuloksen tyypin, joka osoittaa sen olevan kokonaisluku.
Rivit 13-17: Tiedämme sisäänrakennetun hex (n) -menetelmän, joka hyväksyy kokonaislukuarvon ja muuntaa kokonaisluvun heksadesimaalijonoksi. Siksi meidän on muutettava merkkijono kokonaisluvuksi, jotta se siirretään hex () -menetelmään. Siirsimme kyseisen convert_str (kokonaisluku) -arvon hex () -metodille ja saimme hex_value, merkkijonon heksadesimaalin. Tulostamme muunnetun heksadesimaaliluvun. Tulostamme myös muunnetun heksadesimaaliarvon tyypin, mikä osoittaa, että se on merkkijonon heksadesimaalinen tyyppi.
Virhepoikkeus (TypeError):
Joskus saat virheitä, kun muunnamme merkkijonon heksadesimaalijonoksi. Syy tähän on hex () -menetelmä, joka hyväksyy vain kokonaislukuarvon parametrina.
1 2 3 4 5 6 7 | string_hex= '0xFF' hex_output= hex(string_hex) Tulosta(hex_output) |
Lähtö:
1 | Tyyppivirhe:'str' esineei voi tulkitakutenkokonaisluku |
Johtopäätös:
Joten olemme nähneet erilaisia tapoja muuntaa merkkijono heksadesimaaliseksi pieneksi merkkijonoksi. Hex () -menetelmä on erittäin suosittu sen helppokäyttöisyyden vuoksi. Mutta joskus haluamme muuntaa merkkijonon käyttämättä etuliitettä 0x, joten siinä tapauksessa voimme käyttää tavua encode () -menetelmää, kuten olemme jo nähneet artikkelissa.
Tämän artikkelin koodi on saatavana alla olevasta github -linkistä: