Как перевести число в 16 систему счисления в питоне
Перейти к содержимому

Как перевести число в 16 систему счисления в питоне

  • автор:

Перевод чисел в Python

В данной статье мы рассмотрим встроенные функции языка программирования Python по переводу чисел в различные системы счисления. А так же напишем универсальную функцию по переводу десятичных чисел в другие системы счисления.

Перевод чисел из десятичной системы счисления
Для перевода числа из десятичной системы счисления в двоичную можно воспользоваться оператором bin(). В качестве аргумента нужно передать значение в виде числа, а оператор вернет строку с двоичным числом. У результата также будет префикс 0b, указывающий на основание системы счисления.

number = 123 result = bin(number) print(result)
>'0b1111011'

Для перевода в восьмеричную систему счисления есть оператор oct(). Он также возвращает строку с восьмеричным числом и префиксом 0o.

number = 123 result = oct(number) print(result)
>'0o173'

При переводе в шестнадцатеричную систему счисления воспользуемся оператором hex(). Он вернет строку шестнадцатеричным числом и префиксом 0x

number = 123 result = hex(number) print(result)
>'0x7b'

Если же вам не нужен префикс у результата перевода, то всегда можно взять срез у полученной строки.

print(bin(123)[2:]) print(oct(123)[2:]) print(hex(123)[2:])
>'1111011' >'173' >'7b'

Так же выводить числа в других системах счисления можно используя f-строки и формат вывода. Для этого в строке, через символ : указываем буквы b — для двоичной, o — для восьмеричной и x — для шестнадцатеричной системы счисления.

n = 1984 print(f'Двоичное: ') print(f'Восьмеричное: ') print(f'Шестнадцатеричное: ')
Двоичное: 11111000000 Восьмеричное: 3700 Шестнадцатеричное: 7c0

А теперь напишем универсальную функцию convert_to() по переводу чисел из десятичной системы счисления в систему счисления в любым основанием. Наша функция будет ограничена только наличием символов в переводимой системе счисления.
Данная функция принимает три аргумента, два из которых обязательные. Это десятичное целое число number и основание переводимой системы счисления base. Третий аргумент upper служит для указания регистра вывода строки переведенного числа. По умолчанию он установлен в значение False.

def convert_to(number, base, upper=False): digits = '0123456789abcdefghijklmnopqrstuvwxyz' if base > len(digits): return None result = '' while number > 0: result = digits[number % base] + result number //= base return result.upper() if upper else result

Во второй строке мы задаем переменную digits, содержащую набор символов цифр и букв английского языка. Она нам понадобится для составления символов переведенного числа на основании остатков.
В третьей строке мы проверяем основание переданной системы счисления на его длину. Если основание окажется больше, чем количество символов в нашей строке digits, то мы прекращаем выполнение функции через вызов оператора return и возвращаем None. Это такая своеобразная защита функции от неправильно переданных аргументов. Если мы попробуем перевести число в большую систему счисления по основанию, чем у нас есть символов для его записи, то мы его не сможем записать.
Дальше заведем переменную result для хранения результата работы функции и зададим ей значение в виде пустой строки. Теперь с помощью цикла с условием будем находить остаток от деления числа number на основание base, а также уменьшать number в base раз используя целочисленное деление.
Остаток от деления числа на основание переводимой системы счисления мы будем использовать как индекс для получения символа в строке digits и добавлять его к результату result. Добавлять это значение следует слева, т.к. самый первый остаток является самым правым разрядом. Цикл выполняется до тех пор, пока исходное значение переменной number больше нуля.
После завершения цикла мы вернем результат через вызов return. Для этого воспользуемся тернарным оператором и проверим наш третий аргумент. Если он будет в значении True, то для строки result вызовем строкой метод .upper() который заменит все прописные символы английского языка на строчные. Иначе, вернем результат как есть.

А теперь проверим работу нашей функции. Для этого попробуем перевести числа в , , 16ю, 32ю и 64ю системы счисления. Для перевода в 32ю систему счисления мы укажем третий необязательный аргумент upper и зададим ему значение True.

print(convert_to(123, 2)) print(convert_to(123, 8)) print(convert_to(123, 16)) print(convert_to(123, 32, upper=True)) print(convert_to(123, 64))
>'1111011' >'173' >'7b' >'3R' >None

Перевод чисел в десятичную систему счисления
Для обратного перевода в десятичную систему счисления мы будем использовать оператор int(). Для этого передадим ему два аргумента, первый — это строка с числом в какой-то системе счисления, а второй — это основание системы счисления самого числа. По умолчанию для этого необязательного аргумента стоит значение равное 10.
В качестве самого числа нужно обязательно передать строку. Строка может содержать или само число или число с префиксом системы счисления.
Для перевода из двоичной системы счисления:

number = '11001' result = int(number, 2) print(result)
number = '0b11001' result = int(number, 2) print(result)

Для перевода из восьмеричной системы счисления:

Перевод десятичного числа в любую систему счисления

Написать программу, которая переводит десятичное число в любую другую систему счисления. Число и основание новой системы счисления вводятся с клавиатуры. При желании реализовать в программе функцию такого преобразования.

Решение задачи на языке программирования Python

Алгоритм перевода десятичного числа в любую другую систему счисления заключается в последовательном целочисленном делении сначала самого десятичного числа, а потом получаемых частных на основание системы счисления, в которую переводится число. Из остатков такого деления собирается представление числа в новой системе счисления. В той, на основание которой происходило деление. Сбор остатков происходит с конца.

Например, перевод десятичных чисел 160 в восьмеричную и 18 в двоичную системы счисления будет выглядеть так:

160 / 8 = 20 | 0 20 / 8 = 2 | 4 2 / 8 = 0 | 2

16010 = 2408

18 / 2 = 9 | 0 9 / 2 = 4 | 1 4 / 2 = 2 | 0 2 / 2 = 1 | 0 1 / 2 = 0 | 1

1810 = 100102

Даже если использовать этот алгоритм для перевода десятичного числа в десятичную систему счисления будет получен верный результат.

150 // 10 = 15 | 0 15 // 10 = 1 | 5 1 // 10 = 0 | 1

15010 = 15010

Проблема появляется в тот момент, когда основание системы счисления начинает превышать 10. В таких случаях нам не хватает привычных символов цифр (0-9) и требуется ввод дополнительных символов для обозначения значений, соответствующих десятичным числам 10, 11, 12 и т. д. Для примера переведем десятичное число в шестнадцатеричную систему счисления:

700 // 16 = 43 | 12 (C) 43 // 16 = 2 | 11 (B) 2 // 16 = 0 | 2

70010 = 2BC16

Десятичные остатки 12 и 11 при формировании шестнадцатеричного числа должны быть представлены одним разрядом. В таких случаях в качестве цифр, чье значение больше 9-ти, используются английские буквы. Так числу 10 будет соответствовать символ A , числу 11 — B и т. д.

Таким образом, при написании программы перевода десятичного числа в любую систему счисления мы должны предусмотреть подмену остатков на соответствующие им символы, если эта замена требуется.

Будем усложнять программу поэтапно и сначала напишем вариант кода, который переводит не в любую систему счисления, а только с основанием до 10-ти.

num = int(input()) base = 0 while not (2  base  9): base = int(input("Основание (2-9): ")) new = '' while num > 0: remainder = num % base new = str(remainder) + new num = num // base print(new)

В цикле сначала вычисляется остаток. Далее присоединям его спереди к строковой переменной new , в которой хранится представление числа в новой системе счисления. Последним действием присваиваем переменной num частное от целочисленного деления прежнего значения num на основание системы счисления.

Поскольку в языке программирования Python есть функция divmod , сократим код, объединив нахождение остатка и целочисленное деление:

. while num > 0: num, remainder = divmod(num, base) new = str(remainder) + new .

Вызов divmod(num, base) возвращает кортеж из частного и остатка от деления num на base . Далее частное присваивается num , остаток — remainder .

Теперь напишем программу, которая переводит число исключительно в шестнадцатеричную систему счисления. Для хранения символов, которыми будут заменяться двузначные остатки, используем строку из этих символов.

num = int(input()) base = 16 letters = 'ABCDEF' new = '' while num > 0: num, remainder = divmod(num, base) if remainder > 9: letter_id = remainder - 10 remainder = letters[letter_id] new = str(remainder) + new print(new)

Числу 10 соответствует символ A . Поэтому если остаток равен десяти, то letter_id будет равно нулю. Символ под индексом 0 в строке букв — как раз A . Если остаток равен 15-ти, то letter_id будет равно пяти, а letters[5] вернет F .

Программу можно упростить, если в строку символов добавить цифры. В этом случае остатки будут точно соответствовать индексам, под которыми находятся соответствующие им символы.

num = int(input()) base = 16 letters = '0123456789ABCDEF' new = '' while num > 0: num, remainder = divmod(num, base) new = letters[remainder] + new print(new)

На этом этапе должно стать понятно, как написать программу конвертации десятичного числа в почти любую систему счисления. Достаточно немного подправить код перевода в шестнадцатеричную систему, дописав в строку дополнительный набор символов, а не заканчивать ее на F .

Чтобы не хранить в программе строку большой длины и избежать ошибки из-за нечаянно пропущенного какого-нибудь символа, вернемся к варианту, в котором остатки больше девяти заменяются в теле условного оператора. При этом буквы будем брать не из определенной в коде строки, а из встроенной таблицы символов.

num = int(input()) base = 0 while not (2  base  36): base = int(input("Основание (2-36): ")) new = '' while num > 0: num, remainder = divmod(num, base) if remainder > 9: letter = remainder - 10 remainder = chr(ord('A') + letter) new = str(remainder) + new print(new)

Вызов ord(‘A’) возвращает код буквы A в таблице Unicode. К этому коду-числу мы прибавляем смещение по алфавиту (значение letter ). С помощью функции chr() получаем соответстующую коду букву.

def convert_integer(decimal, radix): if radix > 36: return "Основание системы счисления должно быть не больше 36-ти" number = '' while decimal > 0: decimal, remainder = divmod(decimal, radix) if remainder > 9: remainder = chr(ord('A') + remainder - 10) number = str(remainder) + number return number num = int(input("Десятичное число: ")) base = int(input("Основание (2-36): ")) print(convert_integer(num, base))

Ограничение по основанию в 36 связано с количеством букв в английском алфавите. Их 26, плюс десять цифр. Расширить диапазон оснований можно за счет взятия недостающих символов из какой-либо другой части таблицы Unicode. Например, можно добавить к условному оператору ветку elif с условием remainder > 35 , а в теле вычитать из remainder 36.

Однако написать программу, которая переводит десятичное число в абсолютно любую систему счисления нельзя. Иначе надо суметь решить задачу генерации случайного символа, который не должен быть похож ни на какой из полученных ранее.

X Скрыть Наверх

Решение задач на Python

Числа: целые, вещественные, комплексные

Python 3 логотип

Числа в Python 3: целые, вещественные, комплексные. Работа с числами и операции над ними.

Целые числа (int)

Числа в Python 3 ничем не отличаются от обычных чисел. Они поддерживают набор самых обычных математических операций:

x + y Сложение
x — y Вычитание
x * y Умножение
x / y Деление
x // y Получение целой части от деления
x % y Остаток от деления
-x Смена знака числа
abs(x) Модуль числа
divmod(x, y) Пара (x // y, x % y)
x ** y Возведение в степень
pow(x, y[, z]) x y по модулю (если модуль задан)

Также нужно отметить, что целые числа в python 3, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти).

Над целыми числами также можно производить битовые операции

x | y Побитовое или
x ^ y Побитовое исключающее или
x & y Побитовое и
x

Битовый сдвиг влево
x >> y Битовый сдвиг вправо
~x Инверсия битов

Дополнительные методы

int.bit_length() — количество бит, необходимых для представления числа в двоичном виде, без учёта знака и лидирующих нулей.

 int.to_bytes(length, byteorder, *, signed=False) - возвращает строку байтов, представляющих это число.
 int.from_bytes(bytes, byteorder, *, signed=False) - возвращает число из данной строки байтов.

Те, у кого в школе была информатика, знают, что числа могут быть представлены не только в десятичной системе счисления. К примеру, в компьютере используется двоичный код, и, к примеру, число 19 в двоичной системе счисления будет выглядеть как 10011. Также иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:

  • int([object], [основание системы счисления]) — преобразование к целому числу в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.
  • bin(x) — преобразование целого числа в двоичную строку.
  • hex(х) — преобразование целого числа в шестнадцатеричную строку.
  • oct(х) — преобразование целого числа в восьмеричную строку.

Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:

 Для высокой точности используют другие объекты (например Decimal и Fraction)).

Также вещественные числа не поддерживают длинную арифметику:

Простенькие примеры работы с числами:

float.as_integer_ratio() — пара целых чисел, чьё отношение равно этому числу.

float.is_integer() — является ли значение целым числом.

float.hex() — переводит float в hex (шестнадцатеричную систему счисления).

classmethod float.fromhex(s) — float из шестнадцатеричной строки.

  Помимо стандартных выражений для работы с числами (а в Python их не так уж и много), в составе Python есть несколько полезных модулей.

Модуль math предоставляет более сложные математические функции.

 

В Python встроены также и комплексные числа:

     : complex()    Для работы с комплексными числами используется также модуль cmath.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Из десятичной в шестнадцатеричную

Перевод из десятичной системы в шестнадцатеричную
Не могу написать программу, которая переводит из десятичной системы в шестнадцатеричную. При.

Рекурсивный перевод чисел из десятичной системы счисления в шестнадцатеричную
Есть код для рекурсивного перевода чисел из десятичной системы счисления в шестнадцатеричную.

Перевод из десятичной в шестнадцатеричную
Хотел бы добавить в профильную тему, однако она закрыта, может кому понадобится, код полностью.

Перевод из десятичной в шестнадцатеричную и обратно
Задали задание: Напишите программу, которая будет переводить числа между десятеричной и.

Перевод числа с десятичной в шестнадцатеричную
Ребят можете помочь написать,программу перевода числа из десятичной системы счисления в.

1391 / 675 / 300
Регистрация: 05.09.2021
Сообщений: 1,155

1 2 3 4 5 6 7 8 9 10
n = int(input()) s = '' h = '0123456789ABCDEF' while n > 0: s = h[n % 16] + s n = n // 16 print(s)

Эксперт Python

1354 / 651 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
RageGen, a - строки ж есть

1 2 3
a = int(input()) res = f'' print(res)

Эксперт функциональных языков программированияЭксперт Python

36829 / 19877 / 4166
Регистрация: 12.02.2012
Сообщений: 33,013
Записей в блоге: 13
anton78spb, только один досадный недостаток - при n=0 результат - пустая строка
1183 / 759 / 277
Регистрация: 05.09.2021
Сообщений: 1,772

Я вот никогда не понимал, что значит с точки зрения педагога - без встроенных функций.

int - это функция.
input - это еще одна функция.
print - третья функция.

И все это объекты.

По делу, проще не бывает:

print(hex(int(input()))[2:].upper())

1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6

enx, Я придерживаюсь такого же мнения. И считаю, что такие задания наносят вред при обучении питону. Поэтому принципиально за них не берусь. Нужно поощрять учащихся во всех случаях использовать всю мощь питона. И поощрять, если он сам осваивает возможности языка сверх пройденной программы. Все средства, включая примитивные, хороши только тогда, когда они к месту, а не для изощрения, когда есть более простые решения, которые ученик уже знает, пусть даже с помощью самообразования.
Не говоря уже о том, что с точки зрения логики условие вообще абсурдно. Если уж преподаватель хочет, что бы не использовались какие то функции, он должен их назвать.

Эксперт функциональных языков программированияЭксперт Python

36829 / 19877 / 4166
Регистрация: 12.02.2012
Сообщений: 33,013
Записей в блоге: 13

ЦитатаСообщение от enx Посмотреть сообщение

Я вот никогда не понимал, что значит с точки зрения педагога - без встроенных функций.

- без функций, которые решают задачу в одно действие. Одно дело знать алгоритм перевода строки в число, а другое дело - помнить, что а Питоне это делает функция int. Если непонятно, могу развить эту мысль дальше: программирование не сводится к запоминанию библиотечных вызовов.

Добавлено через 5 минут

ЦитатаСообщение от Viktorrus Посмотреть сообщение

И поощрять, если он сам осваивает возможности языка сверх пройденной программы.

- при таком подходе программирование - это запоминание библиотечных вызовов. Это слишком ограниченное представление. К тому же оно "не наследуется" (в другом языке вызовы другие), а знание алгоритмов не устаревает.

Доктрина "не изобретайте велосипеда!" придумана бизнесом и очень ему выгодна. Такого человека легче выучить, его легче заменить (таким же "знатоком" Питона) и, самое главное, ему можно меньше платить. Кто хочет следовать этим путем - флаг в руки и барабан на шею!

Добавлено через 1 минуту

ЦитатаСообщение от enx Посмотреть сообщение

По делу, проще не бывает:
- о да! А теперь я чуть-чуть меняю задачу. Перевести нужно в систему с основанием 17.
1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6

ЦитатаСообщение от Catstail Посмотреть сообщение

о да! А теперь я чуть-чуть меняю задачу. Перевести нужно в систему с основанием 17.

Вот тогда уместно использовать другой алгоритм, а не просто применять встроенную функцию.
Просто задание задано не грамотно. Можно условие формировать так, что бы для решения задачи необходимо было использовать именно примитивные функции и никак иначе.
Все дело в том, что мощь питона, в возможности одну и ту же задачу решать разными способами, и умением выбирать оптимальное решение. А такие задания как это, не учат искать оптимальное решение используя всю мощь питона и все имеющиеся у ученика знания которые он уже освоил из этой мощи. Формируется не правильный подход к решению любых задач и не только в программировании. Учащийся не умеет искать и находить оптимальные алгоритмы решения.
Из за этого у многих программистов проблема в умении грамотно осуществлять постановку задачи и находить оптимальные для конкретного случая алгоритмы.

Эксперт функциональных языков программированияЭксперт Python

36829 / 19877 / 4166
Регистрация: 12.02.2012
Сообщений: 33,013
Записей в блоге: 13

ЦитатаСообщение от Viktorrus Посмотреть сообщение

Все дело в том, что мощь питона, в возможности одну и ту же задачу решать разными способами, и умением выбирать оптимальное решение.

- верно. Но для того, чтобы это сделать, нужно уметь отличать оптимальное от неоптимального. Сделать это может только тот, кто знает алгоритмы. Круг замкнулся. Есть возражения?

1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6

ЦитатаСообщение от Catstail Посмотреть сообщение

верно. Но для того, чтобы это сделать, нужно уметь отличать оптимальное от неоптимального. Сделать это может только тот, кто знает алгоритмы. Круг замкнулся. Есть возражения?

Как я понимаю Вы не считаете

print(hex(int(input()))[2:].upper())

оптимальным решением для перевода из десятичной системы в шестнадцатеричную? Тогда у нас с Вами разные понятия об оптимальности.
В таких случаях, когда каждый вкладывает свой смысл в определения слов и эти определения различаются, как в данном случае в понимании слова "оптимальное", то дискуссия становится бессмысленной.

Добавлено через 4 минуты
Уточню свою позицию. Я против заданий, когда какую то задачу , в данном случае перевод числа из десятичной системы в шестнадцатеричную, предлагают решать не оптимальным способом. Это наносит вред способности учащегося искать оптимальное решение для конкретной задачи.

1183 / 759 / 277
Регистрация: 05.09.2021
Сообщений: 1,772

Я не педагог, мне сложно говорить как 'правильно', но я бы сделал так:

'C первым сентября юные бойцы ИТ, сегодня мы начинаем изучать язык Python. и первая вам задача на неделю, найти и описать все способы, как можно перевести число из 10 системы в 16 на данном ЯП. За каждый уникальный способ +1 балл к оценке, за каждый способ более 5го - плюс одна пятерка, но при условии, что вы ответите на мои вопросы.

Эксперт функциональных языков программированияЭксперт Python

36829 / 19877 / 4166
Регистрация: 12.02.2012
Сообщений: 33,013
Записей в блоге: 13

Viktorrus, я понимаю оптимальность как минимальное количество вычислений. А Вы? Код, который использует стандартную функцию, выполняет столько же вычислений, сколько и вот это:

1 2 3 4 5 6 7
def toHex(n): s="" while True: s+="0123456789ABCDEF"[n%16] n//=16 if n==0: return s

Или Вы знаете другой алгоритм? Поэтому по оптимальности они сопоставимы (Ваш может выполняться быстрее за счет реализации начинки на натуральном C, а может и нет). По методической ценности мое решение для учащихся лучше вне всякого сомнения, т.к. оно дает алгоритм и обладает общностью (легко переделать на любую CC, и на другой язык перевести при необходимости). Хотите возразить?

Добавлено через 1 минуту
enx, а почему только в 16-ю? Не лучше ли решать более общую задачу?

Добавлено через 2 минуты

ЦитатаСообщение от Viktorrus Посмотреть сообщение

Это наносит вред способности учащегося искать оптимальное решение для конкретной задачи.

- еще раз: учащимся, для которых подобные задачи представляют трудность, недоступно (пока) понятие оптимальности. Единственное, что они могут оценить на своем уровне знаний - "длинно" или "коротко". Но к реальной оптимальности это имеет весьма отдаленное отношение. Тут можно сильно обжечься.

1183 / 759 / 277
Регистрация: 05.09.2021
Сообщений: 1,772

ЦитатаСообщение от Catstail Посмотреть сообщение

почему только в 16-ю? Не лучше ли решать более общую задачу

Ну так это на первую неделю, я тут недавно думал, что происходит на форуме. старый стал, забыл что сентябрь пошел. Время летит, не замечаю.

Но вообще вы простите, я ни разу не видел применение 11, 12, 13, 14 и т.д. систем исчисления в практике, кроме пары очень старых и неэффективных методов шифрования. Зато повсеместно вижу 2, 8, 10, 16, 32. - вот это общая задача, для моего скудного и ремесленного подхода.

Вы же тоже опытный человек, судя по лексике и мировоззрению, должны же знать как работает принцип действия \ противодействия. Если использовать методы ограничений и наказаний за отклонения от верного (с точки зрения педагога) пути, будет только 2 варианта:

1. 90% дадут ожидаемый результат, выдав прошлый опыт за свой (спишут, по русски).
2. 10% получат новый опыт, разобрав кейс, но потом наступит момент рефлексии, а зачем это было?

В случае поощрения альтернативного мнения и проактивности, даже пессимистично, если будет так:

1. 89% ожидаемый.
2. 11% новый опыт.

Подход эффективней, с моей точки зрения.

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

18966 / 9661 / 2710
Регистрация: 21.10.2017
Сообщений: 21,466

ЦитатаСообщение от enx Посмотреть сообщение

Зато повсеместно вижу 2, 8, 10, 16, 32 .
Это с разбегу, или я чего-то не знаю?

Эксперт функциональных языков программированияЭксперт Python

36829 / 19877 / 4166
Регистрация: 12.02.2012
Сообщений: 33,013
Записей в блоге: 13

ЦитатаСообщение от Viktorrus Посмотреть сообщение

Вот тогда уместно использовать другой алгоритм
- какой "другой" ?
1183 / 759 / 277
Регистрация: 05.09.2021
Сообщений: 1,772

ЦитатаСообщение от iSmokeJC Посмотреть сообщение

Это с разбегу, или я чего-то не знаю?

Далеко не надо, браузера хватит, а именно преобразования ip адресов.
Во все возможные формы, в том числе преобразование в 32 битные числа (именно числа) из 10ой, 8ой, с ведущими нулями и все такое.

Кому надо, пишите в лс, развлекались недавно, писали преобразование из всех возможных видов, во все возможные.

Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

18966 / 9661 / 2710
Регистрация: 21.10.2017
Сообщений: 21,466
enx, да разговор вроде как про системы счисления, а не про битность.
Это про 32
1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6

iSmokeJC, Я поддерживаю и следую девизу разработчиков питона "Простое лучше сложного". Поэтому для меня оптимальным является более простой код.
Чтобы получить более полное представление о философии Python, введите в любом окне командной подсказки Python команду import this

"Дзен питона, Автор Тим Питерс

Красивое лучше, чем уродливое.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Плоское лучше, чем вложенное.
Разреженное лучше, чем плотное.
Читабельность имеет значение.
Особые случаи не настолько особенные, чтобы нарушать правила.
Хотя практичность превосходит чистоту.
Ошибки никогда не должны проходить бесшумно.
Если только явно не заставят замолчать.
Перед лицом неопределенности откажитесь от искушения угадать.
Должен быть один-и желательно только один-очевидный способ сделать это.
Хотя поначалу это может показаться неочевидным, если только вы не голландец.
Сейчас лучше, чем никогда.
Хотя "никогда" часто бывает лучше ,чем "прямо сейчас".
Если реализацию трудно объяснить, это плохая идея.
Если реализация проста в объяснении, это может быть хорошей идеей.
Пространства имен - это одна замечательная идея, давайте сделаем их больше!
КОНЕЦ ОПИСАНИЯ"

А вот на эту же тему фраза из книги Лутца.
"Программа не должна быть заумной и непонятной — она должна четко сообщать о своем предназначении.
Таким образом, старый акроним KISS по-прежнему актуален: фраза Keep It Simple (сохраняйте его простым), за которой следует либо слово, считающееся в наши дни слишком сексистским (Sir (сэр))."

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *