Вопрос-Ответ

Convert base-2 binary number string to int

Преобразование строки двоичного числа base-2 в int

Я бы просто хотел преобразовать строку двоичного числа base-2 в int, что-то вроде этого:

>>> '11111111'.fromBinaryToInt()
255

Есть ли способ сделать это на Python?

Переведено автоматически
Ответ 1

Вы используете встроенную int() функцию и передаете ей основание входного числа, т. е. 2 для двоичного числа:

>>> int('11111111', 2)
255

Вот документация для Python 2 и для Python 3.

Ответ 2

Просто введите 0b1111111111 в интерактивном интерфейсе python:

>>> 0b11111111
255
Ответ 3

Другой способ сделать это - использовать bitstring модуль:

>>> from bitstring import BitArray
>>> b = BitArray(bin='11111111')
>>> b.uint
255

Обратите внимание, что целое число без знака (uint) отличается от целого числа со знаком (int):

>>> b.int
-1

Ваш вопрос действительно требует представления целого числа без знака; это важное различие.

Модуль bitstring не является обязательным требованием, но в нем есть множество эффективных методов для преобразования входных данных в биты и из них в другие формы, а также для манипулирования ими.

Ответ 4

Использование int с base - правильный путь. Я делал это до того, как обнаружил, что int также принимает base. По сути, это сокращение, применяемое для понимания списка примитивного способа преобразования двоичного кода в десятичный ( например 110 = 2**0 * 0 + 2 ** 1 * 1 + 2 ** 2 * 1)

add = lambda x,y : x + y
reduce(add, [int(x) * 2 ** y for x, y in zip(list(binstr), range(len(binstr) - 1, -1, -1))])
python