我只是想把一个以2为基数的二进制数字字符串转换成一个int型,就像这样:

>>> '11111111'.fromBinaryToInt()
255

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


当前回答

使用内置的int()函数,并将输入数的基数传递给它,即二进制数为2:

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

这里是Python 2和Python 3的文档。

其他回答

使用内置的int()函数,并将输入数的基数传递给它,即二进制数为2:

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

这里是Python 2和Python 3的文档。

只需在python交互界面中输入0b11111111:

>>> 0b11111111
    255

对于大型矩阵(10**5行以上),最好使用向量化matmult。在一次射击中通过所有的排和cols。它非常快。这里python中没有循环。我最初设计它是为了将MovieLens中10个不同类型列的二进制列(如0/1)转换为单个整数。

def BitsToIntAFast(bits):
  m,n = bits.shape
  a = 2**np.arange(n)[::-1]  # -1 reverses array of powers of 2 of same length as bits
  return bits @ a

为了记录在基本python3中来回执行:

a = 10
bin(a)
# '0b1010'

int(bin(a), 2)
# 10
eval(bin(a))
# 10

递归Python实现:

def int2bin(n):
    return int2bin(n >> 1) + [n & 1] if n > 1 else [1]