me gusta simplemente para convertir una cadena número binario en base 2 en un int, algo como esto:Convertir en base 2 cuerdas número binario a int
>>> '11111111'.fromBinaryToInt()
255
¿Hay una manera de hacer esto en Python ?
me gusta simplemente para convertir una cadena número binario en base 2 en un int, algo como esto:Convertir en base 2 cuerdas número binario a int
>>> '11111111'.fromBinaryToInt()
255
¿Hay una manera de hacer esto en Python ?
utiliza el incorporado en int
función, y pasarlo la base del número de entrada, es decir 2
de un número binario: documentación
>>> int('11111111', 2)
255
Gracias, exactamente lo que estaba buscando. –
En caso de que alguien esté buscando lo contrario: 'bin (255)' -> ''0b11111111''. Consulte [esta respuesta] (http://stackoverflow.com/a/699892/638546) para obtener detalles adicionales. –
Se debe tener en cuenta que esto solo funciona para enteros binarios sin signo. Para enteros con signo, las opciones de conversión son un desastre. –
Otra manera de hacer esto es mediante el uso del módulo bitstring
:
>>> from bitstring import BitArray
>>> b = BitArray(bin='11111111')
>>> b.uint
255
Tenga en cuenta que el número entero sin signo es diferente del entero con signo:
>>> b.int
-1
El módulo bitstring
no es un requisito , pero tiene muchos métodos de rendimiento para convertir la entrada en bits y convertirlos en otras formas, así como para manipularlos.
El uso de int con base es el camino correcto a seguir. Solía hacer esto antes de encontrar int. Toma base también. Es básicamente un reducir aplica en una lista de la comprensión de la forma primitiva de la conversión de binario a decimal (por ejemplo, 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))])
En lugar de definir 'add = lambda x, y: x + y',' int .__ add__' se puede proporcionar para reducir. P.ej. 'reduce (int .__ add__, ...)' –
0b11111111 en Python interfaz interactiva:
>>> 0b11111111
255
Si usted quiere saber lo que está sucediendo detrás de la escena, entonces aquí tienes.
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')
A pesar de que en realidad no importa, una cadena binaria normalmente significa una cadena que contiene datos binarios reales (un byte contiene dos dígitos hexadecimales, es decir, "\ x00" es un byte nulo). –