502 Stimmen

Base-2-Binärzahl-String in int konvertieren

Ich möchte einfach eine Base-2-Binärzahl-String in eine int, etwas wie dieses konvertieren:

>>> '11111111'.fromBinaryToInt()
255

Gibt es eine Möglichkeit, dies in Python zu tun?

945voto

unwind Punkte 377331

Sie verwenden die integrierte int() und übergeben ihr die Basis der eingegebenen Zahl, d. h. 2 für eine Binärzahl:

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

Hier finden Sie die Dokumentation für Python 2 und für Python 3 .

54voto

lengxuehx Punkte 1310

Tippen Sie einfach 0b11111111 in Python interaktive Schnittstelle:

>>> 0b11111111
    255

38voto

Alex Reynolds Punkte 93906

Eine andere Möglichkeit ist die Verwendung der Option bitstring Modul:

>>> from bitstring import BitArray
>>> b = BitArray(bin='11111111')
>>> b.uint
255

Beachten Sie, dass sich die vorzeichenlose Ganzzahl von der vorzeichenbehafteten Ganzzahl unterscheidet:

>>> b.int
-1

Le site bitstring Modul ist keine Voraussetzung, aber es verfügt über viele leistungsfähige Methoden, um Eingaben in Bits und aus Bits in andere Formen umzuwandeln und sie zu manipulieren.

10voto

Saurabh Hirani Punkte 1100

Die Verwendung von int mit base ist der richtige Weg. Ich pflegte dies zu tun, bevor ich fand, dass int auch base nimmt. Es ist im Grunde eine Reduktion auf eine Liste Verständnis der primitiven Weg der Umwandlung von binären in dezimale ( zB 110 = 2**0 * 0 + 2 ** 1 * 1 + 2 ** 2 * 1) angewendet

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

5voto

Mohammad Mahjoub Punkte 329

Wenn Sie wissen wollen, was hinter den Kulissen passiert, dann sind Sie hier richtig.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X