Основание шестнадцатеричного числа равно 16, и мы можем представить строку в шестнадцатеричном формате с помощью префикса 0x.
Мы можем преобразовать строку в шестнадцатеричную, используя следующие методы:
- Использование метода hex (n)
- Использование метода encode ()
- Использование метода literal_eval ()
Метод 1: использование шестнадцатеричной ()
Мы можем преобразовать строку в шестнадцатеричную с помощью метода hex (). Метод hex () принимает параметр в целочисленной форме, и для этого сначала мы должны преобразовать строку в целое число, а затем передать это значение методу hex (), как показано ниже:
Пример: string_to_hex.py
1 2 3 4 5 6 7 8 9 10 одиннадцать 12 13 14 пятнадцать 16 17 18 19 двадцать 21 | # string_to_hex.py п знак равно '245FC' # передать str в int (), чтобы преобразовать его в base16 int base16INTзнак равно int(п, 16) # выводим преобразованную строку в шестнадцатеричное целое значение base16 Распечатать('ценить',base16INT) Распечатать('ценить',тип(base16INT)) hex_valueзнак равно шестнадцатеричный(base16INT) Распечатать(hex_value) # проверка типа значения Распечатать(тип(hex_value)) |
Выход:
1 2 3 4 5 6 7 | ценить148988 ценить<класс 'int'> 0x245fc <класс 'str'> |
Строка 3: Мы создали строку для демонстрации.
Строка 6: Мы передаем эту строку методу int () с базой 16. Теперь этот метод int () преобразует строку в шестнадцатеричное целочисленное значение.
Строка 9: Мы печатаем значение, которое получаем после преобразования строки в целое шестнадцатеричное число.
Строка 10: Мы также печатаем тип значения, чтобы подтвердить, что строка теперь имеет целочисленную форму.
Строка 12: Мы знаем, что встроенный метод hex (n) принимает целочисленное значение, преобразуя целое число в шестнадцатеричную строку. Вот почему нам нужно преобразовать строку в целое число, чтобы передать ее в метод hex (). Мы передали это значение base16INT методу hex () и получили шестнадцатеричную строку hex_value.
Строка 13: Мы печатаем это преобразованное шестнадцатеричное значение.
Строка 16: Мы печатаем тип преобразованного шестнадцатеричного значения, которое показывает в выводе, что это строковый тип.
Итак, теперь мы преобразовали строку в шестнадцатеричное значение.
Метод 2: преобразовать строку в шестнадцатеричное с помощью encode ()
Мы также можем преобразовать обычную строку в шестнадцатеричную строку, в которой нет шестнадцатеричных символов. Для этого мы должны преобразовать строку в байт с помощью метода encode (), а затем мы можем преобразовать строку в шестнадцатеричную, как показано ниже:
1 2 3 4 5 6 7 8 9 10 одиннадцать 12 13 14 пятнадцать 16 17 18 19 двадцать 21 22 2. 3 24 25 | # string_to_hex_utf8.py # преобразовываем строку в байты пзнак равно linuxhint.кодировать('utf-8') # выводим преобразованную строку в байты Распечатать(п) # преобразовываем байты строки в шестнадцатеричную строку hex_strзнак равно п.шестнадцатеричный() # выводим преобразованный шестнадцатеричный тип значения Распечатать(тип(hex_str)) |
Выход:
1 2 3 | бlinuxhint <класс 'str'> |
Строки с 4 по 7: Мы создали строку, в которой нет шестнадцатеричных символов. А затем преобразуйте эти строки в байты с помощью метода encode (). Затем мы печатаем те байты, которые видим в строке вывода номер 1.
Строки с 10 по 13: Мы вызываем метод hex () с помощью оператора точки, и теперь байты преобразуются в требуемое шестнадцатеричное строковое значение. Чтобы подтвердить тип результирующей строки, мы просто печатаем строку номер 13, и вывод показывает, что это строка шестнадцатеричного типа.
Метод 3. Использование метода ast.literal_eval ()
Мы также можем преобразовать строку в целое число с помощью библиотечного метода ast literal_eval. Этот метод также преобразует строку в целое число, чтобы использовать метод hex () для преобразования строки в шестнадцатеричную строку. Но этот метод принимает только символы префикса 0x.
1 2 3 4 5 6 7 8 9 10 одиннадцать 12 13 14 пятнадцать 16 17 18 19 двадцать 21 22 2. 3 24 25 26 27 28 год 29 30 31 год 32 33 | # string_to_hex_utf8.py изветвьИмпортироватьliteral_eval п знак равно '0xAAA' # преобразовываем строку в целое число convert_strзнак равноliteral_eval(п) # выводим значение и тип convert_str Распечатать(convert_str) Распечатать('тип', тип(convert_str)) # передать convert_str методу hex () hex_valueзнак равно шестнадцатеричный(convert_str) Распечатать(hex_value) # проверка типа значения Распечатать(тип(hex_value)) |
Выход:
1 2 3 4 5 6 7 | 2730 тип <класс 'int'> 0xaaa <класс 'str'> |
Строки со 2 по 10: Мы импортируем метод literal_eval () из библиотеки ast. Затем мы создаем строку с префиксом 0x. Затем мы передали эту строку методу literal_eval () и преобразовали ее в целое число. Чтобы подтвердить, что вывод находится в целочисленной форме, мы печатаем его в строке номер 9. Мы также печатаем тип вывода, который показывает, что это целое число.
Строки с 13 по 17: Мы знаем встроенный метод hex (n), который принимает целочисленное значение и преобразует целое число в шестнадцатеричную строку. Вот почему нам нужно преобразовать строку в целое число, чтобы передать ее в метод hex (). Мы передали это значение convert_str (integer) методу hex () и получили hex_value, строку в шестнадцатеричном формате. Мы печатаем это преобразованное шестнадцатеричное значение. Мы также печатаем тип преобразованного шестнадцатеричного значения, который показывает, что это шестнадцатеричный строковый тип.
Исключение ошибки (TypeError):
Иногда мы получаем ошибки при преобразовании строки в шестнадцатеричную. Причина в том, что метод hex () принимает в качестве параметра только целочисленное значение.
1 2 3 4 5 6 7 | string_hexзнак равно '0xFF' hex_outputзнак равно шестнадцатеричный(string_hex) Распечатать(hex_output) |
Выход:
1 | TypeError:'str' объектнельзя интерпретироватьв качествецелое число |
Заключение:
Итак, мы видели различные методы преобразования строки в шестнадцатеричную строку в нижнем регистре. Метод hex () очень популярен благодаря простоте использования. Но иногда мы хотим преобразовать строку без использования префикса 0x, поэтому в этом случае мы можем использовать метод bytes encode (), как мы уже видели в статье.
Код этой статьи доступен по следующей ссылке на github: