Функция bin() в Python
Функция bin() в Python используется для преобразования целого числа в строку двоичного формата. Форматированная строка имеет префикс «0b».
Функция bin() может использоваться с целыми числами, имеющими разные форматы, такие как восьмеричный, шестнадцатеричный. Функция позаботится о преобразовании их в двоичную строку. Давайте посмотрим на несколько примеров функции bin().
Из вывода видно, что функция bin() возвращает строку, а не число. Функция ype() возвращает тип объекта.
С целыми числами другого формата
Давайте посмотрим на несколько примеров использования функции bin() с целыми числами в разных форматах.
Совет: Если вам не нужен префикс «0b» в двоичной строке, вы также можете использовать функцию format(). Вот быстрый пример, показывающий, как использовать функцию format().
С аргументом float
Давайте посмотрим, что произойдет, когда мы попытаемся запустить функцию bin() с аргументом float.
С объектом
Если вы хотите иметь двоичное строковое представление объекта, вам нужно будет реализовать функцию __index __(), которая должна возвращать целое число. Давайте посмотрим на простом примере.
Если объект не определяет функцию __index __(), мы получим сообщение об ошибке, как TypeError: объект ‘Person’ не может быть интерпретирован как целое число.
Посмотрим, что произойдет, если функция __index __() вернет no-int. Просто измените функцию index() на следующую:
Ошибка: TypeError: __index__ вернул no-int (тип str).
Это все, что касается функции bin() для преобразования целого числа в двоичную строку. Мы также узнали, что объект также можно преобразовать в двоичное строковое представление, реализовав функцию __index __(), которая возвращает целое число.
Функция Python Bin ()
Функция встроенного корзины Python (Integerger) принимает один целочисленный аргумент и возвращает двоичную строку с префиксом «0B». Если вы называете BIN (X) на нецеловом X, он должен определить метод __index __ (), который возвращает целое число, связанное с X. В противном случае он бросит тип deyeRror: объект не может быть интерпретирован как целое число. https://youtu.be/9bdomkq0epi ArgantIntegeran Целочисленное значение или объект … Python Bin () Функция Подробнее »
- Автор записи
Python’s Встроенный bin (целое число) Функция принимает один целочисленный аргумент и возвращает двоичную строку с префиксом «0b» Отказ Если вы звоните bin (x) на неоцентное число х он должен определить __index __ () Метод, который возвращает целое число, связанное с х Отказ В противном случае это бросит TypeError: объект не может быть интерпретирован как целое число Отказ
Аргумент | целое число | Целочисленное значение или объект, реализующий метод __index __ (). |
Возвращаемое значение | нить | Возвращает строку двоичных чисел, префикс с «0B». |
Но прежде чем мы будем двигаться дальше, я рад представить вам мою новую книгу Python Python One-listers (Amazon Link).
Если вам нравятся одноклассники, вы будете любить книгу. Это научит вам все, что нужно знать о Одно строка кода Python. Но это тоже Введение в компьютерную науку , наука о данных, машин обучения и алгоритмы. Вселенная в одной строке Python!
Книга была выпущена в 2020 году с помощью книги по программированию мирового класса Nostarch Press (San Francisco).
Примеры Bin ()
Следующий код показывает, как использовать bin () Функция на разных входных аргументах.
Вы можете наблюдать несколько свойств bin () Функция:
- Это всегда префиксировано ‘0b’ для бинарный Отказ
- Он возвращает строковое представление целого числа, преобразованного в двоичный файл.
- Если вы пройдете объект класса, реализующего __index__ Метод, возвращающий целое число, Bin (объект) Возвращает двоичные данные, связанные с возвращенным значением.
- Если вы проходите объект класса, не реализовав __index__ Метод, это бросит TypeError: объект не может быть интерпретирован как целое число
Python Bin () без префикса 0b
Чтобы пропустить префикс, используйте нарезка и начать с индекса 2 на двоичной строке. Например, чтобы пропустить префикс ‘0b’ По результатам x = bin (2) = ‘0b10′ Используйте операцию нарезки х [2:] что приводит к просто двоичному номеру ’10’ Без префикса ‘0b’ Отказ
Вот несколько примеров:
Устойчивые методы основаны на Python’s Формат () Функция:
Python Bin () прокладки
Проблема Как преобразовать целое число в двоичный с помощью функции Bin (), но без удаления ведущих нулей. Например, результат должен всегда быть 8-битной длинной:
Как это достичь?
Решение : Используйте Формат () Функция для определения точного формата требуется.
Формат () Функция позволяет использовать Формат Спецификация Мини Язык (FSML). Давайте пойдем слева направо на символы в аргументе FSML.
- Используйте хэштег # включить 0b приставка.
- Используйте 0 Формат символ для установки характера заполнения.
- Используйте 10 Размер форматы выхода, чтобы соответствовать ширину 10 символов. Два из этих 10 символов для ‘0b’ префикс, так что 8 бит остаются в двоичной строке.
- Используйте B Формат символ для форматирования результата как двоичный.
Резюме
Python’s Встроенный bin (целое число) Функция принимает один целочисленный аргумент и возвращает двоичную строку с префиксом «0b» Отказ
Если вы звоните bin (x) на неоцентное число х он должен определить __index __ () Метод, который возвращает целое число, связанное с х Отказ
В противном случае это бросит TypeError: объект не может быть интерпретирован как целое число Отказ
Пример звонка Bin (3) который приводит к двоичной строке 0b11 ‘ Потому что двоичное количество десятичных 3 бинарный 11 Отказ
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Преобразование байтов в биты в Python
для преобразования строки в фактические байты. Как теперь преобразовать эти байты в биты?
Другой способ сделать это — использовать bitstring модуль:
И если вам нужно убрать ведущую 0b :
bitstring Модуль не является обязательным требование, поскольку jcollado ответа показывает «s, но она имеет много производительных методы для токарных ввода в биты и манипулировать ими. Это может вам пригодиться (или нет), например:
На целочисленном уровне операции выполняются намного быстрее. В частности, преобразование в строку, как предлагается здесь, происходит очень медленно.
Если вам нужны только биты 7 и 8, используйте, например,
(это: сдвинуть байт на 6 бит вправо — отбросить их. Затем оставить только последние два бита 3 — это число с установленными первыми двумя битами . )
Их можно легко перевести в простые сверхбыстрые операции ЦП.
Что насчет этого?
Это преобразует имеющуюся шестнадцатеричную строку в целое число, а это целое число — в строку, в которой каждый байт установлен в 0/1 в зависимости от битового значения целого числа.
Как указано в комментарии, если вам нужно избавиться от 0b префикса, вы можете сделать это следующим образом:
Во второй строке происходит волшебство. Все байтовые объекты имеют .hex() функцию, которая возвращает шестнадцатеричную строку. Используя эту шестнадцатеричную строку, мы преобразуем ее в целое число, сообщая int() функции, что это строка с основанием 16 (потому что шестнадцатеричное — это основание 16). Затем мы применяем форматирование к этому целому числу, чтобы оно отображалось в виде двоичной строки. Именно <:08b>здесь происходит настоящее волшебство. Он использует мини-язык спецификации формата format_spec . В частности это с помощью width и type часть format_spec синтаксиса. В 8 наборы width к 8, который , как мы получаем хороший 0000 отступы, и b устанавливает тип в двоичную.
Я предпочитаю этот метод bin() методу, потому что использование строки формата дает гораздо большую гибкость.
Думаю, numpy здесь было бы проще всего использовать . Например, вы можете читать файл в байтах, а затем легко расширять его до битов, например: