Comment exprimez-vous un entier sous forme de nombre binaire avec des littéraux Python?
J'ai pu facilement trouver la réponse pour hex:
>>> 0x12AF
4783
>>> 0x100
256
et octal:
>>> 01267
695
>>> 0100
64
Comment utilisez-vous les littéraux pour exprimer le binaire en Python?
Résumé des réponses
- Python 2.5 et versions antérieures: peut exprimer le binaire en utilisant
int('01010101111',2)
mais pas avec un littéral. - Python 2.5 et versions antérieures: il n'y a aucun moyen d'exprimer des littéraux binaires.
- Python 2.6 beta: Vous pouvez faire comme ça:
0b1100111
ou0B1100111
. - Python 2.6 beta: permettra également à
0o27
ou0O27
(le deuxième caractère est la lettre O) de représenter un octal. - Python 3.0 beta: Identique à 2.6, mais n'autorisera plus l'ancienne
027
syntaxe pour les octales.
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'unB
oub
suivi d'une série de zéros et de uns, par exemple:De l'python 3 documents , ce sont les moyens de fournir des littéraux entiers dans le python:
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 ):
Vous pouvez éventuellement avoir le préfixe
0b
ou0B
:Si vous le passez
0
comme base, il prendra la base 10 si la chaîne ne spécifie pas avec un préfixe: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:
Et vous pouvez combiner
bin
etint
aller et venir:Vous pouvez également utiliser une spécification de format, si vous souhaitez avoir une largeur minimale avec des zéros précédents:
la source
0 au début ici spécifie que la base est 8 (pas 10), ce qui est assez facile à voir:
Si vous ne commencez pas par un 0, python suppose que le nombre est en base 10.
la source
Pour autant que je sache, Python, jusqu'à 2.5, ne prend en charge que les littéraux hexadécimaux et octaux. J'ai trouvé quelques discussions sur l'ajout de binaires aux futures versions mais rien de précis.
la source
Je suis à peu près sûr que c'est l'une des choses dues au changement dans Python 3.0 avec peut-être bin () pour aller avec hex () et oct ().
EDIT: la réponse de lbrandy est correcte dans tous les cas.
la source