Merkkijono heksadesimaaliksi Pythonissa

String Hexadecimal Python



Heksadesimaaliluvun kanta on 16, ja voimme esittää merkkijonon heksadesimaalimuodossa käyttämällä etuliitettä 0x.

Voimme muuntaa merkkijonon heksadesimaaliksi seuraavilla tavoilla:







  1. Käyttämällä hex (n) -menetelmää
  2. Encode () -menetelmän käyttäminen
  3. 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ä:

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