hex()
— встроенная функция в Python, которая используется для возвращения в виде результата шестнадцатеричного формата заданного числа. Принимает один аргумент целочисленного типа и возвращает эквивалентное шестнадцатеричное представление в виде строки.
Что такое шестнадцатеричные числа?
Двоичные числа — отличный способ для компьютеров представлять числа. Они не очень читаемы человеком, так как они очень длинные, и требуется некоторое время, чтобы подсчитать все цифры (1 и 0). Когда компьютерные ученые имеют дело с числами, они часто используют либо десятичную систему, либо шестнадцатеричную систему.
Шестнадцатеричная система счисления используется в качестве одного из методов представления чисел, где каждая цифра представляет степень 16. Как мы знаем, десятичная система счисления является системой счисления с основанием 10, аналогично шестнадцатеричная система счисления является системой счисления с основанием 16. Это означает, что существует 16 шестнадцатеричных цифр.
Они такие же, как десятичные цифры до 9, но вместо десятичных чисел от 10 до 15 есть буквы A, B, C, D, E и F.
Посмотрите на таблицу ниже, чтобы увидеть представление чисел в десятичном, двоичном и шестнадцатеричном формате.
Таблица числовых систем:
Десятичный | Шестнадцатиричный | Двоичный |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 2 | 10 |
3 | 3 | 11 |
4 | 4 | 100 |
5 | 5 | 101 |
6 | 6 | 110 |
7 | 7 | 111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
10 | A | 1010 |
11 | B | 1011 |
12 | C | 1100 |
13 | D | 1101 |
14 | E | 1110 |
15 | F | 1111 |
Обратите внимание, что шестнадцатеричные числа обозначаются либо префиксом, либо суффиксом «0x».
Синтаксис hex():
hex(number)
- Аргумент
number
должен быть целочисленным типомint
.
Пример использования:
my_hex_1 = hex(10)
my_hex_2 = hex(5)
my_hex_3 = hex(2)
print(f'Значение: {my_hex_1}, тип: {type(my_hex_1)}')
print(f'Значение: {my_hex_2}, тип: {type(my_hex_2)}')
print(f'Значение: {my_hex_3}, тип: {type(my_hex_3)}')
Результат:
>>> Значение: 0xa, тип: <class 'str'>
>>> Значение: 0x5, тип: <class 'str'>
>>> Значение: 0x2, тип: <class 'str'>
Использование различных систем исчисления:
# В десятичной системе
my_hex_1 = hex(200)
# В двоичной системе
my_hex_2 = hex(0b11001000)
# В восьмеричной системе
my_hex_3 = hex(0o310)
print(f'Значение: {my_hex_1}, тип: {type(my_hex_1)}')
print(f'Значение: {my_hex_2}, тип: {type(my_hex_2)}')
print(f'Значение: {my_hex_3}, тип: {type(my_hex_3)}')
Результат:
>>> Значение: 0xc8, тип: <class 'str'>
>>> Значение: 0xc8, тип: <class 'str'>
>>> Значение: 0xc8, тип: <class 'str'>
Для чисел с плавающей точкой используется следующая конструкция:
my_hex_1 = float.hex(10.5)
my_hex_2 = float.hex(5.5)
my_hex_3 = float.hex(2.2)
print(f'Значение: {my_hex_1}, тип: {type(my_hex_1)}')
print(f'Значение: {my_hex_2}, тип: {type(my_hex_2)}')
print(f'Значение: {my_hex_3}, тип: {type(my_hex_3)}')
Результат:
>>> Значение: 0x1.5000000000000p+3, тип: <class 'str'>
>>> Значение: 0x1.6000000000000p+2, тип: <class 'str'>
>>> Значение: 0x1.199999999999ap+1, тип: <class 'str'>
Функция hex() с классом и объектом
Мы можем использовать функцию с классом, но, чтобы все работало, как нужно, нам необходим специальный метод __index__
.
class Person:
age = 23
def __index__(self):
print('Вызываем метод index')
print(type(self.age))
return self.age
person = Person()
print('Значение:', hex(person))
Результат:
>>> Вызываем метод index
>>> <class 'int'>
>>> Значение: 0x17
Пояснение:
У нас есть класс Person, в котором задана переменная целочисленного типа в двоичной системе исчисления. Внутри класса определен метод __index__
. Когда мы вызываем функцию передавая наш объект, в качестве аргумента используется именно метод __index__
, где возвращается значение переменной и преобразуется в шестнадцатеричный эквивалент.