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?
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?
Für große Matrizen (10**5 Zeilen und mehr) ist es besser, ein vektorisiertes matmult zu verwenden. Dabei werden alle Zeilen und Spalten in einem Durchgang eingegeben. Das ist extrem schnell. In Python gibt es hier keine Schleifen. Ursprünglich habe ich es entwickelt, um viele binäre Spalten wie 0/1 für etwa 10 verschiedene Genre-Spalten in MovieLens in eine einzelne Ganzzahl für jede Beispielzeile zu konvertieren.
def BitsToIntAFast(bits):
m,n = bits.shape
a = 2**np.arange(n)[::-1] # -1 reverses array of powers of 2 of same length as bits
return bits @ a
Hier ist noch eine weitere Möglichkeit, die in keiner der obigen Antworten erwähnt wird:
>>> eval('0b' + '11111111')
255
Zugegeben, es ist wahrscheinlich nicht sehr schnell, und es ist eine sehr, sehr schlechte Idee, wenn die Zeichenkette von etwas kommt, über das Sie keine Kontrolle haben und das bösartig sein könnte (z. B. Benutzereingaben), aber der Vollständigkeit halber: es funktioniert.
Wenn Sie Python 3.6 oder höher verwenden, können Sie f-string verwenden, um die Umwandlung vornehmen:
Binär zu dezimal:
>>> print(f'{0b1011010:#0}')
90
>>> bin_2_decimal = int(f'{0b1011010:#0}')
>>> bin_2_decimal
90
binär zu oktal hexa und usw.
>>> f'{0b1011010:#o}'
'0o132' # octal
>>> f'{0b1011010:#x}'
'0x5a' # hexadecimal
>>> f'{0b1011010:#0}'
'90' # decimal
Achten Sie auf 2 Informationen, die durch einen Doppelpunkt getrennt sind.
Auf diese Weise können Sie zwischen {binär, oktal, hexadezimal, dezimal} in {binär, oktal, hexadezimal, dezimal} konvertieren, indem Sie die rechte Seite des Doppelpunkts[:]
:#b -> converts to binary
:#o -> converts to octal
:#x -> converts to hexadecimal
:#0 -> converts to decimal as above example
Versuchen Sie, die linke Seite des Doppelpunkts zu ändern, um oktal/hexadezimal/dezimal zu haben.
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.