String naar hexadecimaal in Python

String Hexadecimal Python



Hexadecimaal heeft een basis van 16 en we kunnen een string in hexadecimaal formaat weergeven met het voorvoegsel 0x.

We kunnen de string op de volgende manieren naar hexadecimaal converteren:







  1. De hex(n)-methode gebruiken
  2. De methode coderen () gebruiken
  3. De letterlijke_eval () methode gebruiken

Methode 1: De hex () gebruiken

We kunnen de string naar hexadecimaal converteren met behulp van de methode hex (). De methode hex () accepteert de parameter in de vorm van een geheel getal, en daarvoor moeten we eerst de tekenreeks converteren naar een geheel getal en vervolgens die waarde doorgeven aan de methode hex () zoals hieronder wordt weergegeven:



Voorbeeld: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
elf
12
13
14
vijftien
16
17
18
19
twintig
eenentwintig
# string_to_hex.py

P = '245FC'

# geef de str door aan de int () om deze om te zetten in base16 int

base16INT= int(P, 16)

# print de geconverteerde string naar base16 hexadecimale int-waarde

afdrukken('waarde',base16INT)

afdrukken('waarde',type(base16INT))

hex_waarde= hex(base16INT)

afdrukken(hex_waarde)

# het type van de waarde controleren

afdrukken(type(hex_waarde))

Uitgang:

1
2
3
4
5
6
7
waarde148988

waarde<klas 'int'>

0x245fc

<klas 'str'>

Regel 3: We hebben een string gemaakt voor de demo.

Lijn 6: We geven die string door aan de methode int () met het grondtal 16. Nu zal deze methode int () de string converteren naar de hexadecimale integerwaarde.



Lijn 9: We drukken de waarde af die we krijgen na het converteren van de string naar integer hexadecimaal.





Lijn 10: We drukken ook het waardetype af om te bevestigen dat de string nu de vorm heeft van een geheel getal.

Lijn 12: We weten dat de ingebouwde hex(n)-methode de integerwaarde accepteert en het integer omzet in de hexadecimale tekenreeks. Daarom moeten we de string naar een geheel getal converteren om deze door te geven aan de methode hex (). We hebben die base16INT-waarde doorgegeven aan de methode hex() en hebben de hex_value, string hexadecimaal gekregen.



Lijn 13: We drukken die geconverteerde hexadecimale waarde af.

Lijn 16: We drukken het type van de geconverteerde hexadecimale waarde af, wat in de uitvoer aangeeft dat het een stringtype is.

Dus nu hebben we de string geconverteerd naar een hexadecimale waarde.

Methode 2: Converteer de string naar hexadecimaal met behulp van de codering ()

We kunnen de normale tekenreeks ook converteren naar een hexadecimale tekenreeks die geen hexadecimaal teken heeft. Daarvoor moeten we de string naar byte converteren met behulp van de methode encode (), en dan kunnen we de string naar hexadecimaal converteren, zoals hieronder getoond:

1
2
3
4
5
6
7
8
9
10
elf
12
13
14
vijftien
16
17
18
19
twintig
eenentwintig
22
2. 3
24
25
# string_to_hex_utf8.py



# converteer de string naar de bytes

P= 'linuxhint'.coderen('utf-8')



# print de geconverteerde string naar bytes

afdrukken(P)



# converteer de tekenreeksbytes naar de hexadecimale tekenreeks

hex_str= P.hex()



# druk het geconverteerde hexadecimale waardetype af

afdrukken(type(hex_str))

Uitgang:

1
2
3
B'linuxhint'

<klas 'str'>

Lijn 4 tot 7: We hebben een string gemaakt die geen hexadecimaal teken heeft. En converteer die strings vervolgens naar bytes met behulp van de methode encode () . En dan printen we die bytes, die we kunnen zien in de uitvoerregel nummer 1.

Lijn 10 t/m 13: We roepen de methode hex () aan met behulp van de puntoperator en nu worden de bytes geconverteerd naar de hexadecimale tekenreekswaarde die we nodig hadden. Om het type resultaatreeks te bevestigen, drukken we gewoon regelnummer 13 af, en de uitvoer laat zien dat het een hexadecimaal tekenreekstype is.

Methode 3. De methode ast.literal_eval () gebruiken

We kunnen de string ook naar een geheel getal converteren met behulp van de ast-bibliotheekmethode literal_eval. Deze methode converteert de tekenreeks ook naar een geheel getal om de methode hex () te gebruiken om de tekenreeks naar een hexadecimale tekenreeks te converteren. Maar deze methode accepteert alleen 0x prefix-tekens.

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

vantakimporterenletterlijke_eval

P = '0xAAA'



# converteer de string naar het gehele getal

convert_str=letterlijke_eval(P)



# print de waarde en het type van de convert_str

afdrukken(convert_str)

afdrukken('type', type(convert_str))



# geef de convert_str door aan de hex () methode

hex_waarde= hex(convert_str)

afdrukken(hex_waarde)



# het type van de waarde controleren

afdrukken(type(hex_waarde))

Uitgang:

1
2
3
4
5
6
7
2730

type <klas 'int'>

0xaaa

<klas 'str'>

Lijn 2 tot 10: We importeren de methode literal_eval () uit de ast-bibliotheek. Vervolgens maken we een string met het voorvoegsel 0x. Vervolgens hebben we die string doorgegeven aan de methode literal_eval() en geconverteerd naar het gehele getal. Om te bevestigen dat de uitvoer een geheel getal is, drukken we deze af in regel nummer 9. We drukken ook het type van de uitvoer af, waaruit blijkt dat het een geheel getal is.

Lijn 13 t/m 17: We kennen de ingebouwde hex(n)-methode die de integerwaarde accepteert en de integer converteert naar de hexadecimale string. Daarom moeten we de string naar een geheel getal converteren om deze door te geven aan de methode hex (). We hebben die convert_str(integer) waarde doorgegeven aan de hex() methode en we kregen de hex_value, string hexadecimaal. We drukken die geconverteerde hexadecimale waarde af. We drukken ook het type van de geconverteerde hexadecimale waarde af, wat aangeeft dat het een hexadecimaal stringtype is.

Foutuitzondering (TypeError):

Soms krijgen we fouten bij het converteren van de string naar een hexadecimale string. De reden daarachter is dat de methode hex () alleen de integerwaarde als parameter accepteert.

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



hex_output= hex(string_hex)

afdrukken(hex_output)

Uitgang:

1
Typefout:'str' objectkan niet worden geïnterpreteerdalseen geheel getal

Conclusie:

We hebben dus verschillende methoden gezien om de tekenreeks om te zetten in een hexadecimale tekenreeks in kleine letters. De hex () methode is erg populair vanwege het eenvoudige gebruik. Maar soms willen we de string converteren zonder het voorvoegsel 0x te gebruiken, dus in dat geval kunnen we de methode bytes encode () gebruiken, zoals we al in het artikel hebben gezien.

De code van dit artikel is beschikbaar via de onderstaande github-link:

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