Функция hex() в Python
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Основы «Python»
Комментариев: 0

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__, где возвращается значение переменной и преобразуется в шестнадцатеричный эквивалент.

Теги записи: Python, Основы Python, hex(), Числа,
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)