Ciąg do Hexadecimal w Pythonie

Ciąg do Hexadecimal w Pythonie

Hexadecimal ma podstawę 16 i możemy reprezentować ciąg w formacie szesnastkowym za pomocą prefiksu 0x.

Możemy przekonwertować ciąg na szesnastkowy przy użyciu następujących metod:

  1. Za pomocą metody sześciokątnej (N)
  2. Za pomocą metody encode ()
  3. Za pomocą metody literal_eval ()

Metoda 1: Za pomocą hex ()

Możemy przekonwertować ciąg na heksadecimal za pomocą metody hex (). Metoda hex () akceptuje parametr w formie liczb całkowitych i w tym samym czasie 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

# String_to_Hex.py
str = "245fc"
# Przekaż STR do int (), aby przekonwertować go w bazę16 int
base16int = int (str, 16)
# Wydrukuj konwertowany ciąg na wartość INT Base16
Drukuj („wartość”, base16int)
print („wartość”, typ (base16int))
hex_value = hex (base16int)
druk (hex_value)
# Chcking typ wartości
print (typ (hex_value))

Wyjście:

wartość
0x245fc

Wiersz 3: Utworzyliśmy ciąg do demo.

Linia 6: Przekazujemy ten ciąg do metody int () z podstawą 16. Teraz ta metoda int () przekonwertuje ciąg na wartość całkowitą szesnastkową.

Linia 9: Drukujemy wartość, którą otrzymujemy po przekształceniu ciągu na całkowitą sześciokadcicę.

Linia 10: Drukujemy również typ wartości, aby potwierdzić, że ciąg jest teraz w postaci liczby całkowitej.

Linia 12: Wiemy, że wbudowana metoda hex (n) akceptuje wartość liczb całkowitą, przekształcając liczbę całkowitą na ciąg szesnastkowy. Dlatego musimy przekonwertować ciąg na liczbę całkowitą, aby przekazać go w metodę hex (). Przeszliśmy tę wartość Base16int do metody hex () i dostaliśmy hex_value, string heksadecimal.

Linia 13: Drukujemy tę konwertowaną wartość szesnastkową.

Linia 16: Drukujemy typ konwertowanej wartości szesnastkowej, która pokazuje, że jest to typ ciągów.

Więc teraz przekonwertowaliśmy ciąg 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:

# String_to_Hex_Utf8.py
# Konwertuj ciąg na bajty
str = „Linuxhint”.enkoduj („UTF-8”)
# Wydrukuj konwertowany ciąg na bajty
Drukuj (STR)
# Konwertuj bajty ciągów na ciąg szesnastkowy
hex_str = str.klątwa()
# Wydrukuj konwertowany typ wartości szesnastkowej
print (typ (hex_str))

Wyjście:

Linia 4 do 7: Stworzyliśmy ciąg, który nie ma żadnego heksadecimalnego charakteru. A następnie przekonwertuj te ciągi na bajty za pomocą metody encode (). A następnie drukujemy te bajty, które możemy zobaczyć w wierszu wyjściowym nr 1.

Linia 10 do 13: Nazywamy metodę hex () za pomocą operatora kropkowego, a teraz bajty są konwertowane na wymaganą wartość ciągu szesnastkowego. Aby potwierdzić rodzaj ciągu wyników, po prostu drukujemy numer linii 13, a wyjście pokazuje, że jest on w ciągu sześciokątnego typu.

Metoda 3. Za pomocą AST.Metoda literal_eval ()

Możemy również przekonwertować ciąg na liczbę całkowitą za pomocą metody biblioteki AST literal_eval. Ta metoda przekształca również ciąg na liczbę całkowitą, aby użyć metody hex () do konwersji ciągu na ciąg szesnastkowy. Ale ta metoda akceptuje tylko znaki prefiks 0x.

# String_to_Hex_Utf8.py
z Import Literal_eval
str = "0xaaa"
# Konwertuj ciąg na liczbę całkowitą
Convert_str = literal_eval (str)
# Wydrukuj wartość i typ konwertu_str
print (Convert_str)
print („typ”, type (konwertu_str))
# Przekaż metodę Convert_str do metody hex ()
hex_value = hex (convert_str)
druk (hex_value)
# Chcking typ wartości
print (typ (hex_value))

Wyjście:

2730
typ
0xaaa

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 wyjście jest w formie liczb całkowitych, drukujemy w wierszu 9. Drukujemy również typ wyjścia, który pokazuje, że jest to liczba całkowita.

Linia 13–17: Znamy wbudowaną metodę sześciokątną (n), która akceptuje wartość liczb całkowitą, przekształcając liczbę całkowitą na sznur szesnastkowy. Dlatego musimy przekonwertować ciąg na liczbę całkowitą, aby przekazać go w metodę hex (). Przeszliśmy tę wartość Convert_str (liczba całkowita) do metody hex () i dostaliśmy hex_value, string heksadecimal. Drukujemy tę konwertowaną wartość szesnastkową. Drukujemy również typ konwertowanej wartości szesnastkowej, co pokazuje, że jest to typ szesnastkowy.

Wyjątek błędu (typeerror):

Czasami otrzymamy błędy, konwertując ciąg w ciągu sześciokadciowców. Przyczyną tego jest metoda hex () akceptuje jedynie wartość liczb całkowitą jako parametr.

string_hex = "0xff"
hex_output = hex (string_hex)
druk (hex_output)

Wyjście:

1
Typeerror: obiektu „str” nie można interpretować jako liczby całkowitej

Wniosek:

Tak więc widzieliśmy różne metody konwersji łańcucha na sześciokadcikowy sznurek. Metoda hex () jest bardzo popularna ze względu na jej łatwe użycie. Ale czasami chcemy przekonwertować ciąg bez użycia prefiks 0x, więc w takim przypadku możemy użyć metody bajtów 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-konwersja