Kuinka muuntaa kokonaisluvut binaariksi Python 3: ssa


Paras vastaus

Se on Pythonin kauneus. Monet tavalliset toiminnot on jo toteutettu sinulle. Tämä on yksi tällainen tapaus.

Voit käyttää sisäänrakennettua bin() -toimintoa. Tässä on kuvaus bin() Python tarjoaa:

Muunna kokonaisluku binäärimerkkijonoksi. Tuloksena on kelvollinen Python-lauseke. Jos x ei ole Python-objekti int, sen on määritettävä \_\_index\_\_() -menetelmä, joka palauttaa kokonaisluvun.

Voit käyttää sitä yksinkertaisesti syöttämällä kokonaisluvun, joka ei ole negatiivinen. Tässä on joitain esimerkkejä käytöstä.

>>> bin(0)

"0b0"

>>> bin(12)

"0b1100"

>>> bin(25)

"0b11001"

>>> bin(250)

"0b11111010"

>>> bin(2440)

"0b100110001000"

Mutta ehkä haluat toteuttaa oman toimintosi, joka muuntaa desimaalista binääriseksi oppimistarkoituksiin. Siinä tapauksessa tässä on käytetyn algoritmin ja tässä toteutukseni:

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)

Testit ja käyttö:

>>> 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

Vastaus

Dripto Biswasin tarjoama ratkaisu on ehdottomasti nopein. On kuitenkin olemassa vaihtoehtoisia ratkaisuja, jos olet vain utelias tietämään 🙂

Menetelmä 2

>>> format(5, "b")

"101"

Menetelmä # 3

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

"101"

Jos haluat muuntaa sen takaisin,

>>> int("101", 2)

5

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *