Cómo convertir números enteros a binarios en Python 3


Mejor respuesta

Esa es la belleza de Python. Muchas operaciones comunes ya están implementadas para usted. Este es uno de esos casos.

Puede usar la función bin() incorporada. Aquí está la descripción de bin() que proporciona Python:

Convierta un número entero en una cadena binaria. El resultado es una expresión de Python válida. Si x no es un objeto int de Python, debe definir un \_\_index\_\_() método que devuelve un número entero.

Para usarlo, simplemente pasa un entero entero no negativo. Aquí hay algunos ejemplos de uso.

>>> bin(0)

"0b0"

>>> bin(12)

"0b1100"

>>> bin(25)

"0b11001"

>>> bin(250)

"0b11111010"

>>> bin(2440)

"0b100110001000"

Pero quizás le gustaría implementar su propia función que convierte de decimal a binario, con fines de aprendizaje. En ese caso, aquí hay una descripción del algoritmo que utilicé, y aquí está mi implementación:

def decimal\_to\_binary(decimal):

""" Given a whole, decimal integer,

convert it to a binary

representation

"""

# I"m only making this function support

# non-negative, whole integer only.

if not isinstance(decimal, int) or decimal < 0:

raise TypeError("Input must be a non-negitive, whole integer.")

# we need a stack to store each binary digit in.

stack = []

# while their are still digits left

# to convert in decimal.

while decimal > 0:

# caclute each binary number by dividing decimal

# by two. And since we are "building" our binary

# string backwards, insert() in the front of the

# list instead of append()-ing to the back.

stack.insert(0, str(decimal \% 2))

# after we"ve calcute the binary value of the current

# decimal, divide the decimal by 2. But make sure we

# use // instead of / to get a while number!

decimal = decimal // 2

# join() together each value in stack, and return

# the finished binary string. Note: I simply

# added the "0b" prefix because that is how Python

# prepends its binary strings. If you don"t perfer that,

# then simply remove the "0b" + part from bellow.

return "0b" + "".join(stack)

Pruebas y uso:

>>> bin(0) == decimal\_to\_binary(0)

True

>>> bin(12) == decimal\_to\_binary(12)

True

>>> bin(25) == decimal\_to\_binary(25)

True

>>> bin(250) == decimal\_to\_binary(250)

True

>>> bin(2440) == decimal\_to\_binary(2440)

True

Respuesta

La solución proporcionada por Dripto Biswas es definitivamente la más rápida. Sin embargo, existen soluciones alternativas, en caso de que solo tenga curiosidad por saber 🙂

Método # 2

>>> format(5, "b")

"101"

Método # 3

>>> "{0:b}".format(5)

"101"

Ahora, si desea volver a convertirlo,

>>> int("101", 2)

5

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *