Как вы выражаете целое число в виде двоичного числа с литералами Python?
Я легко смог найти ответ для гекса:
>>> 0x12AF
4783
>>> 0x100
256
и восьмеричное:
>>> 01267
695
>>> 0100
64
Как вы используете литералы для выражения двоичного в Python?
Резюме Ответов
- Python 2.5 и более ранние версии: могут выражать двоичные данные,
int('01010101111',2)
но не с литералом - Python 2.5 и более ранние версии : нет способа выразить двоичные литералы.
- Python 2.6 beta: вы можете сделать так:
0b1100111
или0B1100111
. - Python 2.6 beta: также позволяет
0o27
или0O27
(второй символ - буква O) представлять восьмеричное число. - Бета-версия Python 3.0: то же, что и 2.6, но более не допускает использования более старого
027
синтаксиса для восьмеричных чисел.
Они не "двоичные" литералы, а "целочисленные литералы". Вы можете выразить целочисленные литералы в двоичном формате с
0
последующим послеB
илиb
после ряда нулей и единиц, например:Из документов Python 3 это способы предоставления целочисленных литералов в Python:
Другие способы выражения двоичного кода:
Вы можете иметь нули и единицы в строковом объекте, которым можно манипулировать (хотя в большинстве случаев вам, вероятно, следует просто выполнять побитовые операции с целым числом) - просто передайте int строку нулей и единиц и базу, из которой вы конвертируете (2 ):
При желании вы можете иметь префикс
0b
или0B
:Если вы передадите его
0
как основание, оно примет основание 10, если строка не содержит префикса:Преобразование из int обратно в читаемый двоичный код:
Вы можете передать целое число в bin, чтобы увидеть строковое представление двоичного литерала:
И вы можете комбинировать
bin
иint
идти вперед и назадВы также можете использовать спецификацию формата, если вы хотите иметь минимальную ширину с предыдущими нулями:
источник
0 в начале здесь указывает, что основание составляет 8 (не 10), что довольно легко увидеть:
Если вы не начинаете с 0, то python предполагает, что число является основанием 10.
источник
Насколько я могу сказать, Python до версии 2.5 поддерживает только шестнадцатеричные и восьмеричные литералы. Я нашел некоторые обсуждения о добавлении двоичных файлов в будущие версии, но ничего определенного.
источник
Я почти уверен, что это одна из вещей из-за изменений в Python 3.0, возможно, в bin () добавлены hex () и oct ().
РЕДАКТИРОВАТЬ: ответ lbrandy является правильным во всех случаях.
источник