Функция bin() в Python, число в двоичную строку
Функция bin() преобразует целое число в двоичную строку с префиксом 0b .
Результатом будет binary string — двоичная версия заданного целого числа x .
Примеры преобразований чисел в двоичную систему счисления.
>>> bin(3) # '0b11' >>> bin(-10) # '-0b1010'
Если префикс 0b является НЕ желательным , вы можете использовать любой из следующих способов.
>>> format(14, '#b'), format(14, 'b') # ('0b1110', '1110') >>> f'14:#b>', f'14:b>' # ('0b1110', '1110')
Смотрите также встроенную функцию format().
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция 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(), следующий элемент асинхронного итератора
Python как написать функцию перевода из k-ичной системы в десятичную?
Единственное ограничение: основание может быть от 2 до 36. Если нужна другая база, надо писать самому. Это другой разговор.
Отслеживать
ответ дан 26 окт 2012 в 20:18
23.9k 2 2 золотых знака 37 37 серебряных знаков 69 69 бронзовых знаков
Стоит заметить, что int в CPython не хранится в десятичной системе ( sys.int_info ). print вызывает str(int) функцию, которая и преобразует int в строку, содержащую десятичные цифры (это не бесплатная операция—она может занимать долгое время для больших чисел.
14 фев 2017 в 0:28
Думаю, что в таком мощном Пайтоне, всё таки есть нужная функция. Полистайте мануал. Если что, смотрите в преобразования методом Горнера. Вот JS, надеюсь вы сможете перевести её в Python:
function 2dec ( str, base ) < base = (!base)? 2:Number(base); str = str.split(''); var s = 0; for( var k in str ) < s = (base*s + (str[k]-0)); >return s; >
Отслеживать
ответ дан 26 окт 2012 в 20:04
2,079 12 12 серебряных знаков 12 12 бронзовых знаков
А как самого себя минуснуть?
26 окт 2012 в 20:35
js: parseInt(’12h’, 36)
13 фев 2017 в 14:30
@istem, зачем? Посетители сами упорядочат ответы голосами.
13 фев 2017 в 18:46
Решение для основания 36 с помощью reduce (python2):
str = '1zz'; res=reduce(lambda x,y:x*36+('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.find(y)), str.strip().upper(),0) print res; # 2591
Отслеживать
27.2k 2 2 золотых знака 45 45 серебряных знаков 76 76 бронзовых знаков
ответ дан 13 фев 2017 в 14:20
int в CPython не хранится в десятичной системе:
>>> import sys >>> sys.int_info sys.int_info(bits_per_digit=30, sizeof_digit=4)
print(some_number) вызывает str(int) функцию, которая и преобразует int в строку, содержащую десятичные цифры (это не бесплатная операция—она может занимать долгое время для больших чисел).
Будем считать, что задача в вопросе: преобразовать строку kstr , содержащую натуральное число в к -ичной системе исчисления в Python int объект.
Если нельзя использовать int(kstr, base) напрямую (основание больше 36, цифры нестандартные, то легко в цикле собрать из отдельных цифр соответствующее число. К примеру, аналог 1003 = 910:
>>> from functools import reduce >>> reduce(lambda n, d: n * 3 + d, map("012".index, "100")) 9 >>> int("100", 3) 9
Если цифры abc , а не 012 то есть для baa3 = 910:
>>> reduce(lambda n, d: n * 3 + d, map("abc".index, "baa")) 9
Можно написать функцию, которая автоматически генерирует функцию преобразования (converter) по заданным цифрам системы счисления:
from functools import reduce def make_converter_int_from_base_k(digits): """Return int(kstr, len(digits)) analog for any digits.""" if not digits: raise ValueError('no digits') k = len(digits) basek2digit = .__getitem__ def converter(kstr): if not (set(kstr) : ') return reduce(lambda number, digit: number*k + digit, map(basek2digit, kstr)) return converter
>>> base3 = make_converter_int_from_base_k('abc') >>> base3('c') 2 >>> base3('ba') 3 >>> base3('baa') 9
Пример из Википедия как число, представляющее Man в ASCII, можно в основание 64 преобразовать (507121410 = 4d616e16 = TWFu64):
>>> import base64 >>> import string >>> int.from_bytes(b'Man', 'big') 5071214 >>> base64.b64encode(b'Man') b'TWFu' >>> base64digits = string.ascii_uppercase + string.ascii_lowercase + string.digits + '+/' >>> base64decode = make_converter_int_from_base_k(base64digits) >>> base64decode('TWFu').to_bytes(3, 'big') b'Man'
Если известны ограничения на вводимые числа, то можно попробовать угадать систему счисления по самому числу, не задавая digits явно.
При преобразовании между некоторыми парами систем исчисления, иногда достаточно только строковых замен без промежуточного преобразования в int. К примеру из 16-ной в 2-ную (hex2bin()), из 2-ной в 8-ную (bin2oct()).
Стоит заметить, что int в CPython не хранится в десятичной системе ( sys.int_info ). print вызывает str(int) функцию, которая и преобразует int в строку, содержащую десятичные цифры (это не бесплатная операция—она может занимать долгое время для больших чисел).
Перевод строки в двоичный код в Python
В этой статье мы узнаем, как преобразовать и перевести строку в ее двоичный код в Python. Мы знаем, что строки представляют собой последовательность строк и обозначаются кавычками.
Двоичные числа представлены в виде нулей и единиц, информация всегда кодируется в двоичном формате, поскольку это то, что понимает компьютер.
Методы преобразования строки в двоичный файл, которые мы будем использовать здесь, включают join(), ord(), format() и bytearray().
Мы должны взять соответствующие значения ASCII символов, которые присутствуют в строке, и преобразовать их в двоичные.
Давайте посмотрим на описание функций, которые мы взяли в нашем наборе инструментов:
- join() – берет все элементы и объединяет их в единый объект (в результате получается одна строка).
- ord() – этот метод принимает символ и преобразует его в соответствующее значение UNICODE.
- format() – метод принимает значение и вставляет его там, где присутствуют заполнители, он также используется для объединения частей строки с заданными интервалами.
- bytearray() – возвращает массив байтов.
Следующая программа показывает, как это можно сделать:
# declaring the string str_to_conv = "Let's learn Python" # printing the string that will be converted print("The string that we have taken is ",str_to_conv) # using join() + ord() + format() to convert into binary bin_result = ''.join(format(ord(x), '08b') for x in str_to_conv) # printing the result print("The string that we obtain binary conversion is ",bin_result)
The string that we have taken is Let's learn Python The string that we obtain binary conversion is 010011000110010101110100001001110111001100100000011011000110010101100001011100100110111000100000010100000111100101110100011010000110111101101110
Давайте разберемся, что мы сделали в вышеуказанной программе.
- Прежде всего, мы объявили строку, которую нужно преобразовать в двоичную форму, со значением «Let’s learn Python».
- Следующим шагом является отображение созданной нами строки, чтобы с помощью вывода было легко понять, какая из них является нашей строкой и каков ее двоичный эквивалент.
- Затем мы использовали метод format() и указали его параметры как ord() и ’08b’, который берет каждый символ из нашей строки с помощью цикла for и конвертирует их в двоичный формат.
- Общий результат сохраняется в переменной bin_result и, наконец, мы отображаем его значение.
В следующем примере мы сделаем то же самое, используя bytearray().
# declaring the string str_to_conv = "Let's learn Python" # printing the string that will be converted print("The string that we have taken is ",str_to_conv) # using join(), format() and bytearray() to convert into binary bin_result = ''.join(format(x,'08b') for x in bytearray(str_to_conv,'utf-8')) # printing the result print("The string that we obtain binary conversion is ",bin_result)
The string that we have taken is Let's learn Python The string that we obtain binary conversion is 010011000110010101110100001001110111001100100000011011000110010101100001011100100110111000100000010100000111100101110100011010000110111101101110
Давайте посмотрим, насколько отличался вышеуказанный подход.
- Прежде всего, мы объявили строку, которую нужно преобразовать в двоичную форму, со значением «Let’s learn Python».
- Следующим шагом является отображение созданной нами строки, чтобы с помощью вывода было легко понять, какая из них является нашей строкой и каков ее двоичный эквивалент.
- Затем мы использовали функцию bytearray(), в которой каждый символ из строки берется с помощью цикла for и конвертируется в двоичный.
- Общий результат сохраняется в переменной bin_result и, наконец, мы отображаем его значение.
Числа: целые, вещественные, комплексные
Числа в 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
- Реклама на сайте