Convert base-2 binary number string to int
我只想将一个以2为基数的二进制数字字符串转换成int,如下所示:
1 2 | >>> '11111111'.fromBinaryToInt() 255 |
在python中有什么方法可以做到这一点吗?
使用内置的
1 2 | >>> int('11111111', 2) 255 |
这里是关于python2和python3的文档。
只需在python交互界面中键入0b11111111:
1 2 | >>> 0b11111111 255 |
另一种方法是使用
1 2 3 4 | >>> from bitstring import BitArray >>> b = BitArray(bin='11111111') >>> b.uint 255 |
号
请注意,无符号整数与有符号整数不同:
1 2 | >>> b.int -1 |
使用int和base是正确的方法。在我发现int也取基之前,我曾经这样做过。它基本上是对二进制转换为十进制的基本方法(例如110=2**0*0+2**1*1+2**2*1)的列表理解的简化。
1 2 | 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实现:
1 2 | def int2bin(n): return int2bin(n >> 1) + [n & 1] if n > 1 else [1] |
。
If you wanna know what is happening behind the scene, then here you go.
号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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') |
。