Comment exprimez-vous les littéraux binaires en Python?
Ce ne sont pas des littéraux "binaires", mais plutôt des "littéraux entiers". Vous pouvez exprimer des littéraux entiers au format binaire avec un 0
suivi d'un B
ou b
suivi d'une série de zéros et de uns, par exemple:
>>> 0b0010101010
170
>>> 0B010101
21
De l'python 3 documents , ce sont les moyens de fournir des littéraux entiers dans le python:
Les littéraux entiers sont décrits par les définitions lexicales suivantes:
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"
Il n'y a pas de limite pour la longueur des littéraux entiers en dehors de ce qui peut être stocké dans la mémoire disponible.
Notez que les zéros non significatifs dans un nombre décimal non nul ne sont pas autorisés. C'est pour la désambiguïsation avec les littéraux octaux de style C, que Python utilisait avant la version 3.0.
Quelques exemples de littéraux entiers:
7 2147483647 0o177 0b100110111
3 79228162514264337593543950336 0o377 0xdeadbeef
100_000_000_000 0b_1110_0101
Modifié dans la version 3.6: les traits de soulignement sont désormais autorisés à des fins de regroupement en littéraux.
Autres façons d'exprimer le binaire:
Vous pouvez avoir les zéros et les uns dans un objet chaîne qui peut être manipulé (bien que vous devriez probablement simplement effectuer des opérations au niveau du bit sur l'entier dans la plupart des cas) - passez simplement entre la chaîne de zéros et de uns et la base à partir de laquelle vous convertissez (2 ):
>>> int('010101', 2)
21
Vous pouvez éventuellement avoir le préfixe 0b
ou 0B
:
>>> int('0b0010101010', 2)
170
Si vous le passez 0
comme base, il prendra la base 10 si la chaîne ne spécifie pas avec un préfixe:
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
Conversion de int retour en binaire lisible par l'homme:
Vous pouvez passer un entier à bin pour voir la représentation sous forme de chaîne d'un littéral binaire:
>>> bin(21)
'0b10101'
Et vous pouvez combiner bin
et int
aller et venir:
>>> bin(int('010101', 2))
'0b10101'
Vous pouvez également utiliser une spécification de format, si vous souhaitez avoir une largeur minimale avec des zéros précédents:
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'