Wie drückt man binäre Literale in Python aus?
Sie sind keine "binären" Literale, sondern "ganzzahlige Literale". Sie können ganzzahlige Literale mit einem Binärformat ausdrücken, 0
gefolgt von einem B
oder b
gefolgt von einer Reihe von Nullen und Einsen, zum Beispiel:
>>> 0b0010101010
170
>>> 0B010101
21
In den Python 3- Dokumenten können Sie auf folgende Weise ganzzahlige Literale in Python bereitstellen:
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 Ganzzahlliteralen, abgesehen davon, was im verfügbaren Speicher gespeichert werden kann.
Beachten Sie, dass führende Nullen in einer Dezimalzahl ungleich Null nicht zulässig sind. Dies dient zur Disambiguierung mit Oktalliteralen im C-Stil, die Python vor Version 3.0 verwendet hat.
Einige Beispiele für ganzzahlige Literale:
7 2147483647 0o177 0b100110111
3 79228162514264337593543950336 0o377 0xdeadbeef
100_000_000_000 0b_1110_0101
In Version 3.6 geändert: Unterstriche sind jetzt für Gruppierungszwecke in Literalen zulässig.
Andere Möglichkeiten, Binärdateien auszudrücken:
Sie können die Nullen und Einsen in einem Zeichenfolgenobjekt haben, das manipuliert werden kann (obwohl Sie in den meisten Fällen wahrscheinlich nur bitweise Operationen an der Ganzzahl ausführen sollten) - übergeben Sie einfach die Zeichenfolge aus Nullen und Einsen und die Basis, von der Sie konvertieren (2) ):
>>> int('010101', 2)
21
Optional können Sie das Präfix 0b
oder haben 0B
:
>>> int('0b0010101010', 2)
170
Wenn Sie es 0
als Basis übergeben, wird Basis 10 angenommen, wenn die Zeichenfolge kein Präfix enthält:
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
Konvertieren von int zurück in von Menschen lesbare Binärdateien:
Sie können eine Ganzzahl an bin übergeben, um die Zeichenfolgendarstellung eines binären Literal anzuzeigen:
>>> bin(21)
'0b10101'
Und Sie können kombinieren bin
und int
hin und her gehen:
>>> bin(int('010101', 2))
'0b10101'
Sie können auch eine Formatspezifikation verwenden, wenn Sie eine Mindestbreite mit vorhergehenden Nullen haben möchten:
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'