838 Stimmen

Python int zu binärem String?

Gibt es irgendwelche festen Python-Methoden, um einen Integer (oder Long) in eine binäre Zeichenfolge in Python zu konvertieren?

Es gibt eine Unzahl von dec2bin() Funktionen auf Google... Aber ich hatte gehofft, ich könnte eine integrierte Funktion / Bibliothek verwenden.

7voto

pitfall Punkte 2371

Mit numpy pack/unpackbits sind sie Ihre besten Freunde.

Examples
--------
>>> a = np.array([[2], [7], [23]], dtype=np.uint8)
>>> a
array([[ 2],
       [ 7],
       [23]], dtype=uint8)
>>> b = np.unpackbits(a, axis=1)
>>> b
array([[0, 0, 0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 1, 1, 1],
       [0, 0, 0, 1, 0, 1, 1, 1]], dtype=uint8)

6voto

Tim Uzlov Punkte 151

Python 3.6 fügte einen neuen Ansatz zur String-Formatierung hinzu, der formatierte String-Literale oder "f-Strings" genannt wird. Beispiel:

name = 'Bob'
number = 42
f"Hello, {name}, your number is {number:>08b}"

Die Ausgabe lautet: "Hallo, Bob, deine Nummer ist 00001010!

Eine Diskussion zu dieser Frage finden Sie hier - Aquí

5voto

Tom Hale Punkte 32065

numpy.binary_repr(num, width=None)

Beispiele aus der oben verlinkten Dokumentation:

>>> np.binary_repr(3)
'11'
>>> np.binary_repr(-3)
'-11'
>>> np.binary_repr(3, width=4)
'0011'

Das Zweierkomplement wird zurückgegeben, wenn die Eingangszahl negativ ist und die Breite angegeben wird:

>>> np.binary_repr(-3, width=3)
'101'
>>> np.binary_repr(-3, width=5)
'11101'

5voto

Reza Abtin Punkte 187

Eine weitere Lösung mit einem anderen Algorithmus, unter Verwendung von bitweisen Operatoren.

def int2bin(val):
    res=''
    while val>0:
        res += str(val&1)
        val=val>>1     # val=val/2 
    return res[::-1]   # reverse the string

Eine schnellere Version ohne Umkehrung der Zeichenkette.

def int2bin(val):
   res=''
   while val>0:
       res = chr((val&1) + 0x30) + res
       val=val>>1    
   return res

4voto

mukundan Punkte 89
def binary(decimal) :
    otherBase = ""
    while decimal != 0 :
        otherBase  =  str(decimal % 2) + otherBase
        decimal    //=  2
    return otherBase

print binary(10)

Ausgabe:

1010

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