В этом посте я расскажу вам о 8 различных методах с практическими примерами преобразования строки в шестнадцатеричный формат в Python.

Преобразование строки в ее шестнадцатеричное представление — обычная задача в Python, особенно при работе с двоичными данными или кодированием текста для передачи или хранения.

В базах данных или файловых системах шестнадцатеричное представление может хранить двоичные данные или строки в более компактном или читаемом формате. Это может быть полезно для повышения эффективности хранения или для определенных форматов данных, требующих шестнадцатеричного представления.

Содержание

Преобразование с помощью метода 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().

Преобразование с помощью метода 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.

Код 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.

Использование понимания списка и функции ord()

Метод 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.

Метод encode()

Метод 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:

Метод literal_eval()

Функция 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.

Функция int()

Метод 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.

Метод bytes()

Метод 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.

Метод format()

Заключение

В этой статье мы рассмотрели 8 различных методов, таких как hex(), encode(), hexlify() и т. д., для преобразования строки в шестнадцатеричное число в Python. Каждый метод предлагает свои преимущества в простоте, эффективности и универсальности.

Понимая эти методы и их преимущества, вы можете выбрать наиболее подходящий подход для вашего конкретного случая использования, будь то кодирование текста для передачи, обработка двоичных данных или любой другой сценарий.

Добавить комментарий