В этом посте я расскажу вам о 8 различных методах с практическими примерами преобразования строки в шестнадцатеричный формат в Python.
Преобразование строки в ее шестнадцатеричное представление — обычная задача в Python, особенно при работе с двоичными данными или кодированием текста для передачи или хранения.
В базах данных или файловых системах шестнадцатеричное представление может хранить двоичные данные или строки в более компактном или читаемом формате. Это может быть полезно для повышения эффективности хранения или для определенных форматов данных, требующих шестнадцатеричного представления.
- Преобразование с помощью метода hex()
- Как преобразовать строку с помощью функции hexlify()
- Использование понимания списка и функции ord()
- Метод encode()
- Метод literal_eval()
- Функция int()
- Метод bytes()
- Метод format()
- Заключение
Преобразование с помощью метода hex()
Метод hex() — это встроенная функция Python, которая преобразует целое число в его шестнадцатеричное представление. Мы можем использовать этот метод и функцию ord() для преобразования каждого строкового символа в его шестнадцатеричный эквивалент.
Использование метода hex() — это простой и лаконичный способ сделать его простым выбором для преобразования отдельных символов в шестнадцатеричный формат.
Код:
string = "Python" hex_representation = ''.join(hex(ord(char)) for char in string) print(hex_representation)
В этом коде мы преобразовали каждый символ в соответствующее ему значение ASCII с помощью функции ord() в Python, а затем преобразовали каждое значение ASCII в его шестнадцатеричное представление с помощью метода hex().
Выход:
0x500x790x740x680x6f0x6e
Вы можете обратиться к следующему снимку экрана, чтобы преобразовать строку в шестнадцатеричное число в Python с помощью метода hex().
Как преобразовать строку с помощью функции hexlify()
Функция binascii.hexlify() из модуля binascii преобразует двоичные данные в шестнадцатеричное представление в кодировке ASCII. Мы можем закодировать строку в двоичный формат, а затем использовать эту функцию для получения ее шестнадцатеричного представления.
Код:
import binascii string = "Python" hex_representation = binascii.hexlify(string.encode()).decode() print(hex_representation)
Сначала он кодирует строку «Python» в байты с помощью .encode(), затем преобразует эти байты в шестнадцатеричное представление с помощью binascii.hexlify().
binascii.hexlify(string.encode()).decode()
Наконец, он декодирует полученные байты, чтобы получить шестнадцатеричную строку, и печатает ее.
Выход:
507974686f6e
Прикреплен снимок экрана моего кода Python, выполненного в Visual Studio.
Использование понимания списка и функции ord()
Понимание списка обеспечивает краткий способ перебора символов в строке и применения функции ord() для получения их значений ASCII. Затем мы можем преобразовать эти значения в шестнадцатеричные значения.
Код:
string = "Python" hex_representation = "".join([hex(ord(char)) for char in string]) print(hex_representation)
В этом коде мы используем понимание списка для перебора каждого символа строки и преобразования каждого символа в его значение ASCII с помощью метода ord() в Python.
Наконец, он объединяет все шестнадцатеричные представления в одну строку и печатает ее.
Выход:
0x500x790x740x680x6f0x6e
Вот снимок экрана, демонстрирующий мой код Python в Visual Studio.
Метод encode()
Метод encode() может преобразовать строку в байты, используя указанную кодировку, например UTF-8. Затем мы можем получить шестнадцатеричное представление этих байтов.
Код:
string = "Python" hex_representation = string.encode('utf-8').hex() print(hex_representation)
В этом коде используются встроенные в Python методы кодирования строк и шестнадцатеричного преобразования.
string.encode('utf-8').hex()
Сначала он кодирует строку «Python» в байты, используя кодировку UTF-8 с помощью .encode(‘utf-8’), затем преобразует эти байты непосредственно в шестнадцатеричное представление с помощью метода .hex() в Python.
Выход:
507974686f6e
Я включил снимок экрана, показывающий мой код Python из Visual Studio.
Метод literal_eval()
Функция literal_eval() из модуля ast оценивает строку, содержащую литерал Python или отображение контейнера.
Мы можем использовать эту функцию для преобразования строки в шестнадцатеричное представление.
Код:
from ast import literal_eval string = "0x"+input("Enter the string : ") converted_string = literal_eval(string) print(converted_string) print("type", type(converted_string)) hex_value = hex(converted_string) print(hex_value) print(type(hex_value))
Выход:
Enter the string : abcd 43981 type <class 'int'> 0xabcd <class 'str'>
Вот снимок экрана моего кода Python, работающего в Visual Studio:
Функция int()
Функция int() в Python может преобразовать строку в целое число. Указав базовый аргумент равным 16, мы можем напрямую получить шестнадцатеричное представление строки.
Код:
string = "Python" hex_representation = hex(int(string.encode('utf-8').hex(), 16)) print(hex_representation)
Использование метода int() для преобразования строки в шестнадцатеричный формат немного сложнее, поскольку он преобразует строку «Python» в ее целочисленное представление, а затем преобразует это целое число обратно в шестнадцатеричную строку.
Выход:
0x507974686f6e
Прикреплен скриншот моего кода Python в Visual Studio.
Метод bytes()
Метод bytes() преобразует заданную строку в объект bytes. Затем мы можем получить шестнадцатеричное представление этих байтов, используя метод hex().
Код:
string = "Python" hex_representation = bytes(string, 'utf-8').hex() print(hex_representation)
Он кодирует строку «Python» в байты, используя кодировку UTF-8 с байтами(строка, ‘utf-8’), а затем преобразует эти байты непосредственно в шестнадцатеричное представление с помощью метода .hex().
Выход:
507974686f6e
Ниже показан снимок экрана моего кода Python из Visual Studio.
Метод format()
Мы используем метод format() в Python для преобразования каждого строкового символа в соответствующее ему значение ASCII с помощью ord(char), а затем форматируем его как шестнадцатеричную строку с использованием спецификатора формата.
Код:
string = "Python" hex_representation = ''.join(format(ord(char), 'x') for char in string) print(hex_representation)
Этот код перебирает каждый символ в строке «Python» и преобразует значение ASCII каждого символа в его шестнадцатеричное представление с помощью функции format() со спецификатором формата «x».
Выход:
507974686f6e
Ниже представлен скриншот моего кода Python, выполненного в Visual Studio.
Заключение
В этой статье мы рассмотрели 8 различных методов, таких как hex(), encode(), hexlify() и т. д., для преобразования строки в шестнадцатеричное число в Python. Каждый метод предлагает свои преимущества в простоте, эффективности и универсальности.
Понимая эти методы и их преимущества, вы можете выбрать наиболее подходящий подход для вашего конкретного случая использования, будь то кодирование текста для передачи, обработка двоичных данных или любой другой сценарий.