将base-2二进制数字string转换为int

我只是想将一个基2的二进制数字string转换为一个int,如下所示:

>>> '11111111'.fromBinaryToInt() 255 

有没有办法在Python中做到这一点?

您使用内置的int函数,并将其传递给input数字的基数,即2表示二进制数字:

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

这里是python2和python3的文档。

另一种方法是使用bitstring模块:

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

请注意,无符号整数与有符号整数不同:

 >>> b.int -1 

bitstring模块不是bitstring ,但它有很多高性能的方法来将input和input转换成其他forms,并对其进行操作。

只需在python交互式界面中键入0b11111111

 >>> 0b11111111 255 

在基地使用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')