我只是想把一个以2为基数的二进制数字字符串转换成一个int型,就像这样:
>>> '11111111'.fromBinaryToInt()
255
在Python中有办法做到这一点吗?
我只是想把一个以2为基数的二进制数字字符串转换成一个int型,就像这样:
>>> '11111111'.fromBinaryToInt()
255
在Python中有办法做到这一点吗?
当前回答
为了记录在基本python3中来回执行:
a = 10
bin(a)
# '0b1010'
int(bin(a), 2)
# 10
eval(bin(a))
# 10
其他回答
使用内置的int()函数,并将输入数的基数传递给它,即二进制数为2:
>>> int('11111111', 2)
255
这里是Python 2和Python 3的文档。
另一种方法是使用bitstring模块:
>>> from bitstring import BitArray
>>> b = BitArray(bin='11111111')
>>> b.uint
255
注意无符号整数不同于有符号整数:
>>> b.int
-1
bitstring模块不是必需的,但它有许多性能方法,用于将输入转换为比特或将比特转换为其他形式,以及操作它们。
为了记录在基本python3中来回执行:
a = 10
bin(a)
# '0b1010'
int(bin(a), 2)
# 10
eval(bin(a))
# 10
只需在python交互界面中输入0b11111111:
>>> 0b11111111
255
如果你想知道幕后发生了什么,那就给你。
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')