So konvertieren Sie Ganzzahlen in Python 3 in Binärdateien


Beste Antwort

Das ist das Schöne an Python. Viele gängige Operationen sind bereits für Sie implementiert. Dies ist ein solcher Fall.

Sie können die integrierte Funktion bin() verwenden. Hier ist die Beschreibung von bin() Python:

Konvertiert eine Ganzzahl in eine Binärzeichenfolge. Das Ergebnis ist ein gültiger Python-Ausdruck. Wenn x kein Python int -Objekt ist, muss ein \_\_index\_\_() Methode, die eine Ganzzahl zurückgibt.

Um sie zu verwenden, übergeben Sie einfach eine nicht negative ganze Ganzzahl. Hier einige Anwendungsbeispiele.

>>> bin(0)

"0b0"

>>> bin(12)

"0b1100"

>>> bin(25)

"0b11001"

>>> bin(250)

"0b11111010"

>>> bin(2440)

"0b100110001000"

Aber vielleicht möchten Sie Ihre eigene Funktion implementieren, die zu Lernzwecken von dezimal in binär konvertiert wird. In diesem Fall ist hier eine Beschreibung des von mir verwendeten Algorithmus und hier meine Implementierung:

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)

Tests und Verwendung:

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

Antwort

Die von Dripto Biswas bereitgestellte Lösung ist definitiv die schnellste. Es gibt jedoch alternative Lösungen, falls Sie nur neugierig waren 🙂

Methode 2

>>> format(5, "b")

"101"

Methode # 3

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

"101"

Wenn Sie es jetzt zurückkonvertieren möchten,

>>> int("101", 2)

5

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.