Я просто хотел бы преобразовать двоичную числовую строку base-2 в int, что-то вроде этого:
>>> '11111111'.fromBinaryToInt()
255
Есть ли способ сделать это в Python?
Я просто хотел бы преобразовать двоичную числовую строку base-2 в int, что-то вроде этого:
>>> '11111111'.fromBinaryToInt()
255
Есть ли способ сделать это в Python?
Вы используете встроенную функцию int
и передаете ей базу входного номера, т.е. 2
для двоичного номера:
>>> int('11111111', 2)
255
Просто введите 0b11111111 в интерактивном интерфейсе python:
>>> 0b11111111
255
Другой способ сделать это - использовать модуль bitstring
:
>>> from bitstring import BitArray
>>> b = BitArray(bin='11111111')
>>> b.uint
255
Обратите внимание, что целое число без знака отличается от знакового целого:
>>> b.int
-1
Модуль bitstring
не является обязательным требованием, но он имеет множество эффективных методов для ввода ввода и из бит в другие формы, а также для их управления.
Использование int с базой - правильный путь. Раньше я делал это, прежде чем обнаружил, что int также использует базу. Это в основном сокращение, применяемое к пониманию списка примитивного способа преобразования двоичного в десятичное (например, 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))])
Если вы хотите знать, что происходит за сценой, тогда вы идете.
class Binary():
def __init__(self, binNumber):
self._binNumber = binNumber
self._binNumber = self._binNumber[::-1]
self._binNumber = list(self._binNumber)
self._x = [1]
self._count = 1
self._change = 2
self._amount = 0
print(self._ToNumber(self._binNumber))
def _ToNumber(self, number):
self._number = number
for i in range (1, len (self._number)):
self._total = self._count * self._change
self._count = self._total
self._x.append(self._count)
self._deep = zip(self._number, self._x)
for self._k, self._v in self._deep:
if self._k == '1':
self._amount += self._v
return self._amount
mo = Binary('101111110')
Рекурсивная реализация Python:
def int2bin(n):
return int2bin(n >> 1) + [n & 1] if n > 1 else [1]