Wie kann man binäre Literale in Python ausdrücken?
Es handelt sich nicht um "binäre" Literale, sondern um "ganzzahlige Literale". Ganzzahlige Literale mit binärem Format können Sie mit einem 0
gefolgt von einer B
o b
gefolgt von einer Reihe von Nullen und Einsen, zum Beispiel:
>>> 0b0010101010
170
>>> 0B010101
21
Aus dem Python 3 docs sind die Möglichkeiten zur Bereitstellung ganzer Literale in Python:
Ganzzahlige Literale werden durch die folgenden lexikalischen Definitionen beschrieben:
integer ::= decinteger | bininteger | octinteger | hexinteger
decinteger ::= nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
bininteger ::= "0" ("b" | "B") (["_"] bindigit)+
octinteger ::= "0" ("o" | "O") (["_"] octdigit)+
hexinteger ::= "0" ("x" | "X") (["_"] hexdigit)+
nonzerodigit ::= "1"..."9"
digit ::= "0"..."9"
bindigit ::= "0" | "1"
octdigit ::= "0"..."7"
hexdigit ::= digit | "a"..."f" | "A"..."F"
Es gibt keine Begrenzung für die Länge von Ganzzahl-Literalen, abgesehen von dem, was im verfügbaren Speicher gespeichert werden kann.
Beachten Sie, dass führende Nullen in einer Dezimalzahl, die nicht Null ist, nicht erlaubt sind. Dies dient der Disambiguierung mit Oktal-Literalen im C-Stil, die in Python vor Version 3.0 verwendet hat.
Einige Beispiele für Ganzzahl-Literale:
7 2147483647 0o177 0b100110111
3 79228162514264337593543950336 0o377 0xdeadbeef
100_000_000_000 0b_1110_0101
Geändert in Version 3.6: Unterstriche sind jetzt zur Gruppierung in Literalen erlaubt.
Andere Möglichkeiten, binär auszudrücken:
Sie können die Nullen und Einsen in einem String-Objekt haben, das manipuliert werden kann (obwohl Sie wahrscheinlich nur bitweise Operationen auf der ganzen Zahl in den meisten Fällen tun sollten) - übergeben Sie einfach int die Zeichenfolge von Nullen und Einsen und die Basis, die Sie konvertieren von (2):
>>> int('010101', 2)
21
Optional können Sie die 0b
o 0B
Vorwahl:
>>> int('0b0010101010', 2)
170
Wenn Sie sie bestehen 0
als Basis angeben, wird die Basis 10 angenommen, wenn die Zeichenkette nicht mit einem Präfix versehen ist:
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
Konvertierung von int zurück in menschenlesbares Binärformat:
Sie können eine ganze Zahl an bin übergeben, um die String-Darstellung eines binären Literales zu sehen:
>>> bin(21)
'0b10101'
Und Sie können kombinieren bin
y int
hin und her zu gehen:
>>> bin(int('010101', 2))
'0b10101'
Sie können auch eine Formatangabe verwenden, wenn Sie eine Mindestbreite mit vorangestellten Nullen wünschen:
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'