Функция hex() в Python, число в шестнадцатеричную строку
Функция hex() преобразует целое число в шестнадцатеричную строку с префиксом 0x .
В функцию hex() может быть передан любой объект, реализующий метод __index__() , возвращающий целое число.
Если вы хотите преобразовать целое число в шестнадцатеричную строку с префиксом в верхнем или нижнем регистре, можете использовать один из следующих способов:
>>> '%#x' % 255, '%x' % 255, '%X' % 255 ('0xff', 'ff', 'FF') >>> format(255, '#x'), format(255, 'x'), format(255, 'X') ('0xff', 'ff', 'FF') >>> f'255:#x>', f'255:x>', f'255:X>' ('0xff', 'ff', 'FF')
- Смотрите также format() для получения дополнительной информации.
- Смотрите также int() для преобразования шестнадцатеричной строки в целое число, по основанию 16.
Заметка:
Чтобы получить шестнадцатеричное строковое представление для числа с плавающей запятой, используйте метод float.hex() .
Примеры преобразований числа в шестнадцатеричную строку.
>>> hex(255) '0xff' >>> hex(-42) '-0x2a'
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора
Функция hex() в Python
Функция hex() в Python используется для преобразования целого числа в шестнадцатеричную строку в нижнем регистре с префиксом «0x».
Мы также можем передать объект в функцию hex(), в этом случае для объекта должна быть определена функция __index __(), которая возвращает целое число.
Входной целочисленный аргумент может быть в любой базе, такой как двоичная, восьмеричная и т.д. Python позаботится о преобразовании их в шестнадцатеричный формат.
Пример
Давайте рассмотрим несколько простых примеров преобразования целого числа в шестнадцатеричное.
print(hex(255)) # decimal print(hex(0b111)) # binary print(hex(0o77)) # octal print(hex(0XFF)) # hexadecimal
0xff 0x7 0x3f 0xff
С объектом
Давайте создадим собственный класс и определим функцию __index __(), чтобы мы могли использовать с ним функцию hex().
class Data: def __index__(self): print('__index__ function called') return self.id d = Data() d.id = 100 print(hex(d))
__index__ function called 0x64
bin, oct, hex – системы исчисления
Вспомним основы информатики и поговорим о системах исчисления. В жизни мы привыкли к десятичной системе (base-10 или decimal), железо компьютеров оперирует в системе двоичной (base-2 или binary) – нулями и единицами. Часто приходится иметь дело с системой шестнадцатиричной (base-16 или hexadecimal), она позволяет записывать данные в 8 раз короче, чем двоичная. Реже встречается система восьмеричная (base-8 или octal). Система исчисления – это всего лишь средство представления числа, т.е. то, как мы его в строчку запишем или считаем, само число остается самим собой, независимо от системы.
Чтобы получить целое число из строки, записанной в какой-то системе исчисления, используем функцию int (второй параметр – база системы):
>>> int('42') # по умолчанию 10 42 >>> int('42', 10) # тоже самое 42 >>> int('101010', 2) 42 >>> int('BEEF', 16) 48879 >>> int('7654', 8) 4012
Наоборот сделать из числа строку в какой-то системе – встроенные функции bin, oct и hex:
>>> bin(42) '0b101010' >>> hex(48879) '0xbeef' >>> oct(4012) '0o7654'
В строке появились префиксы 0b , 0x и 0o . Как и в Си, в Python можно использовать эти префиксы для записи чисел в коде помимо обычного десятичного варианта, если это требуется:
>>> 0b11011, 0xDEAD, 0o777 (27, 57005, 511)
Однако, часто приходится иметь дело с чистыми HEX-данными без префиксов. Многие (да и я) делали вот так:
>>> hex(12345)[2:] '3039'
Т.е. просто отрезали первые два символа. Это не очень интуитивно, да и может привести к неправильному поведению, если передать отрицательное число:
>>> hex(-12345) '-0x3039' >>> hex(-12345)[2:] 'x3039'
К счастью, есть встроенная функция format(value, format_spec) (не путать с str.format ), которая форматирует значение, согласно спецификатору форматирования:
>>> format(3039, 'x'), format(3039, 'X'), format(3039, '#x') ('bdf', 'BDF', '0xbdf') >>> format(120, 'b') '1111000' >>> format(79, 'o') '117'
- x — 16-ричное без префикса, маленькие букв
- X — 16-ричное без префикса, заглавные буквы
- #x — 16-ричное с префиксом, маленькие буквы
- b — двоичное число без префикса и т.д.
format(value, format_spec) эквивалентная вызову type(value).__format__(value, format_spec) .
Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway
Как получить шестнадцатеричное число из строки в Python
Для разбора строки с 16-м числом, вам нужно использовать функцию int :
print(int('0x0ff', 16)) # 255
Отслеживать
ответ дан 4 июл 2022 в 10:37
76.7k 6 6 золотых знаков 54 54 серебряных знака 121 121 бронзовый знак
- python
- hex
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
