Hex: примеры (PYTHON)

Работа с функцией hex в языке Python
Раздел: Встроенные функции, Преобразование типов
hex(number): str

Описание функции hex()

Функция hex() в Python применяется для преобразования целого числа в строку, представляющую это число в шестнадцатеричной системе счисления. Она используется, когда требуется получить текстовое шестнадцатеричное представление числовых данных, например, для отладки, вывода информации или взаимодействия с низкоуровневыми системами.

Функция принимает один обязательный аргумент: x - целое число (объект типа int). Любой объект, реализующий метод __index__() и возвращающий целое число, также может быть передан в функцию.

Возвращаемое значение - строка, начинающаяся с префикса 0x, за которым следуют шестнадцатеричные цифры (от 0 до 9 и от a до f в нижнем регистре). Если аргумент не является целым числом Python, вызывается его метод __index__() для получения целого значения перед преобразованием.

Основные примеры использования

Пример с положительным целым числом:

print(hex(255))
0xff

Пример с отрицательным целым числом:

print(hex(-42))
-0x2a

Пример с нулем:

print(hex(0))
0x0

Использование с числом, реализующим метод __index__():

class MyNumber:
    def __index__(self):
        return 16

print(hex(MyNumber()))
0x10

Похожие функции в Python

  • bin(x) - преобразует целое число в двоичную строку с префиксом '0b'. Предпочтительна для работы с битовыми представлениями.
  • oct(x) - преобразует целое число в восьмеричную строку с префиксом '0o'. Используется для восьмеричных представлений.
  • format(x, 'x') или f'{x:x}' - предоставляет больше контроля над форматированием (регистр символов, наличие префикса). Используется, когда требуется кастомное форматирование.
  • int(hex_string, 16) - обратное преобразование из шестнадцатеричной строки в целое число.

Аналоги функции в других языках

JavaScript: Метод toString(16) у чисел. Префикс '0x' не добавляется автоматически.

console.log((255).toString(16));
ff

PHP: Функция dechex(). Работает только с положительными целыми.

echo dechex(255);
ff

Java: Метод Integer.toHexString(). Без префикса.

System.out.println(Integer.toHexString(255));
ff

C#: Метод ToString("X") или ToString("x") для управления регистром.

Console.WriteLine(255.ToString("X"));
FF

Go: Пакет fmt с форматным спецификатором %x или функция strconv.FormatInt().

fmt.Printf("%x", 255)
ff

Kotlin: Метод toString(16).

println(255.toString(16))
ff

Типичные ошибки

Передача нецелого числа приводит к TypeError:

print(hex(3.14))
TypeError: 'float' object cannot be interpreted as an integer

Попытка преобразования строки, содержащей шестнадцатеричное число, без предварительного приведения к int:

print(hex('ff'))
TypeError: 'str' object cannot be interpreted as an integer

Правильный подход: сначала преобразовать строку в int, указав основание системы счисления.

print(hex(int('ff', 16)))
0xff

Изменения в последних версиях

В Python 3 основные принципы работы функции hex() остаются неизменными по сравнению с Python 2. В Python 2 функция также возвращала строку с префиксом '0x', но для длинных целых чисел добавлялся суффикс 'L', который был удален в Python 3 после унификации типов целых чисел.

Начиная с Python 3.6, добавлена поддержка подчеркиваний в числовых литералах для удобства чтения, но функция hex() не включает их в вывод.

print(hex(1_000_000))
0xf4240

Расширенные примеры использования

Работа с большими целыми числами:

Пример python
large_num = 2**64
print(hex(large_num))
0x10000000000000000

Преобразование списка чисел в шестнадцатеричные представления:

Пример python
numbers = [0, 15, 255, 4096]
hex_list = [hex(n) for n in numbers]
print(hex_list)
['0x0', '0xf', '0xff', '0x1000']

Удаление префикса '0x' из результата:

Пример python
value = 255
hex_str = hex(value)[2:]
print(hex_str)
ff

Использование с регистром символов (дополнительное форматирование через format):

Пример python
value = 255
print(f'С нижним регистром: {hex(value)}')
print(f'С верхним регистром: {format(value, "#X")}')
С нижним регистром: 0xff
С верхним регистром: 0XFF

Применение для представления байтов:

Пример python
byte_data = b'Python'
for byte in byte_data:
    print(hex(byte), end=' ')
0x50 0x79 0x74 0x68 0x6f 0x6e 

Создание кастомного класса с поддержкой преобразования в hex через __index__():

Пример python
class Color:
    def __init__(self, r, g, b):
        self.r = r
        self.g = g
        self.b = b
    def __index__(self):
        return (self.r << 16) | (self.g << 8) | self.b

c = Color(255, 128, 0)
print(hex(c))
0xff8000

питон hex function comments

En
Hex Convert to hexadecimal string