Ciąg znaków do postaci szesnastkowej w Pythonie

String Hexadecimal Python



Szesnastkowy ma podstawę 16 i możemy przedstawić ciąg w formacie szesnastkowym, używając przedrostka 0x.

Możemy przekonwertować ciąg na szesnastkowy, korzystając z następujących metod:







  1. Używając metody hex(n)
  2. Korzystanie z metody kodowania ()
  3. Korzystanie z metody literal_eval ()

Metoda 1: Korzystanie z heksadecymatu ()

Możemy przekonwertować ciąg na szesnastkowy za pomocą metody hex(). Metoda hex() przyjmuje parametr w postaci liczby całkowitej i w tym celu najpierw musimy przekonwertować ciąg na liczbę całkowitą, a następnie przekazać tę wartość do metody hex(), jak pokazano poniżej:



Przykład: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
jedenaście
12
13
14
piętnaście
16
17
18
19
20
dwadzieścia jeden
# ciąg_do_szesnastkowego.py

P = '245FC'

# przekaż str do int (), aby przekonwertować go na base16 int

podstawa16INT= int(P, 16)

# wypisz przekonwertowany ciąg do szesnastkowej wartości int o podstawie 16

wydrukować('wartość',podstawa16INT)

wydrukować('wartość',rodzaj(podstawa16INT))

wartość_szesnastkowa= klątwa(podstawa16INT)

wydrukować(wartość_szesnastkowa)

# sprawdzanie typu wartości

wydrukować(rodzaj(wartość_szesnastkowa))

Wyjście:

1
2
3
4
5
6
7
wartość148988

wartość<klasa „wewnątrz”>

0x245fc

<klasa „str”>

Linia 3: Stworzyliśmy ciąg do demonstracji.

Linia 6: Przekazujemy ten łańcuch do metody int() o podstawie 16. Teraz ta metoda int() przekonwertuje łańcuch na szesnastkową wartość całkowitą.



Linia 9: Wypisujemy wartość, którą otrzymamy po przekonwertowaniu ciągu na liczbę całkowitą szesnastkową.





Linia 10: Wypisujemy również typ wartości, aby potwierdzić, że łańcuch ma teraz postać liczby całkowitej.

Linia 12: Wiemy, że wbudowana metoda hex(n) przyjmuje wartość całkowitą, konwertując liczbę całkowitą na ciąg szesnastkowy. Dlatego musimy przekonwertować łańcuch na liczbę całkowitą, aby przekazać go do metody szesnastkowej (). Przekazaliśmy tę wartość base16INT do metody hex() i otrzymaliśmy hex_value, ciąg szesnastkowy.



Linia 13: Wypisujemy przekonwertowaną wartość szesnastkową.

Linia 16: Wypisujemy typ przekonwertowanej wartości szesnastkowej, która pokazuje na wyjściu, że jest to typ łańcucha.

Więc teraz przekonwertowaliśmy łańcuch na wartość szesnastkową.

Metoda 2: Konwertuj ciąg na szesnastkowy za pomocą encode()

Możemy również przekonwertować normalny ciąg na ciąg szesnastkowy, który nie ma żadnego znaku szesnastkowego. W tym celu musimy przekonwertować ciąg na bajt za pomocą metody encode(), a następnie możemy przekonwertować ciąg na szesnastkowy, jak pokazano poniżej:

1
2
3
4
5
6
7
8
9
10
jedenaście
12
13
14
piętnaście
16
17
18
19
20
dwadzieścia jeden
22
2. 3
24
25
# string_to_hex_utf8.py



# przekonwertuj ciąg na bajty

P= „linuxhint”.kodować(„utf-8”)



# wypisz przekonwertowany ciąg do bajtów

wydrukować(P)



# przekonwertuj bajty ciągu na ciąg szesnastkowy

hex_str= P.klątwa()



# wypisz przekonwertowany typ wartości szesnastkowej

wydrukować(rodzaj(hex_str))

Wyjście:

1
2
3
b„linuxhint”

<klasa „str”>

Linia 4 do 7: Stworzyliśmy ciąg, który nie ma żadnego znaku szesnastkowego. A następnie przekonwertuj te ciągi na bajty za pomocą metody encode(). Następnie wypisujemy te bajty, które widzimy w wierszu wyjściowym numer 1.

Linia 10 do 13: Wywołujemy metodę szesnastkową () za pomocą operatora kropki, a teraz bajty są konwertowane na wymaganą przez nas wartość ciągu szesnastkowego. Aby potwierdzić typ ciągu wynikowego, po prostu wypisujemy wiersz numer 13, a wynik pokazuje, że jest to ciąg szesnastkowy.

Metoda 3. Korzystanie z metody ast.literal_eval ()

Możemy również przekonwertować ciąg na liczbę całkowitą, używając metody biblioteki ast literal_eval. Ta metoda również konwertuje ciąg na liczbę całkowitą, aby użyć metody szesnastkowej () do przekonwertowania ciągu na ciąg szesnastkowy. Ale ta metoda akceptuje tylko znaki prefiksu 0x.

1
2
3
4
5
6
7
8
9
10
jedenaście
12
13
14
piętnaście
16
17
18
19
20
dwadzieścia jeden
22
2. 3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

zOddziałimportdosłowne_ocena

P = '0xAAA'



# przekonwertuj łańcuch na liczbę całkowitą

convert_str=dosłowne_ocena(P)



# wypisz wartość i typ zmiennej convert_str

wydrukować(convert_str)

wydrukować('rodzaj', rodzaj(convert_str))



# przekaż convert_str do metody szesnastkowej ()

wartość_szesnastkowa= klątwa(convert_str)

wydrukować(wartość_szesnastkowa)



# sprawdzanie typu wartości

wydrukować(rodzaj(wartość_szesnastkowa))

Wyjście:

1
2
3
4
5
6
7
2730

rodzaj <klasa „wewnątrz”>

0xaaa

<klasa „str”>

Linia 2 do 10: Importujemy metodę literal_eval() z biblioteki ast. Następnie tworzymy ciąg z prefiksem 0x. Następnie przekazaliśmy ten ciąg do metody literal_eval() i przekonwertowaliśmy go na liczbę całkowitą. Aby potwierdzić, że dane wyjściowe są w postaci liczby całkowitej, wypisujemy je w wierszu numer 9. Wypisujemy również typ wyniku, który pokazuje, że jest to liczba całkowita.

Linia 13 do 17: Znamy wbudowaną metodę hex(n), która przyjmuje wartość całkowitą, konwertując liczbę całkowitą na ciąg szesnastkowy. Dlatego musimy przekonwertować łańcuch na liczbę całkowitą, aby przekazać go do metody szesnastkowej (). Przekazaliśmy tę wartość convert_str(integer) do metody hex() i otrzymaliśmy hex_value, ciąg szesnastkowy. Wypisujemy przekonwertowaną wartość szesnastkową. Wyświetlamy również typ przekonwertowanej wartości szesnastkowej, co pokazuje, że jest to typ szesnastkowy ciągu.

Wyjątek błędu (TypeError):

Czasami podczas konwersji ciągu na ciąg szesnastkowy wystąpią błędy. Powodem tego jest to, że metoda hex() akceptuje tylko wartość całkowitą jako parametr.

1
2
3
4
5
6
7
ciąg_szesnastkowy= '0xFF'



hex_output= klątwa(ciąg_szesnastkowy)

wydrukować(hex_output)

Wyjście:

1
Wpisz błąd:„str” obiektnie można zinterpretowaćjakLiczba całkowita

Wniosek:

Tak więc widzieliśmy różne metody konwersji ciągu na ciąg szesnastkowy pisany małymi literami. Metoda heksadecymalna () jest bardzo popularna ze względu na łatwość jej użycia. Czasami jednak chcemy przekonwertować ciąg bez użycia przedrostka 0x, więc w takim przypadku możemy użyć metody bytes encode(), jak już widzieliśmy w artykule.

Kod tego artykułu jest dostępny pod poniższym linkiem github:

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