¿Cómo se expresa un número entero como un número binario con literales de Python?
Pude encontrar fácilmente la respuesta para hexadecimal:
>>> 0x12AF
4783
>>> 0x100
256
y octal:
>>> 01267
695
>>> 0100
64
¿Cómo se usan los literales para expresar binarios en Python?
Resumen de respuestas
- Python 2.5 y anteriores: puede expresar binario usando
int('01010101111',2)
pero no con un literal. - Python 2.5 y anteriores: no hay forma de expresar literales binarios.
- Python 2.6 beta: puede hacerlo así:
0b1100111
o0B1100111
. - Python 2.6 beta: también permitirá
0o27
o0O27
(el segundo carácter es la letra O) para representar un octal. - Python 3.0 beta: igual que 2.6, pero ya no permitirá la
027
sintaxis anterior para los octales.
No son literales "binarios", sino "literales enteros". Puede expresar literales enteros con un formato binario
0
seguido deB
aob
seguido de una serie de ceros y unos, por ejemplo:De los documentos de Python 3 , estas son las formas de proporcionar literales enteros en Python:
Otras formas de expresar binario:
Puede tener los ceros y unos en un objeto de cadena que puede manipularse (aunque probablemente debería hacer operaciones bit a bit en el entero en la mayoría de los casos): simplemente pase int la cadena de ceros y unos y la base desde la que está convirtiendo (2 ):
Opcionalmente, puede tener el prefijo
0b
o0B
:Si lo pasa
0
como base, asumirá la base 10 si la cadena no se especifica con un prefijo:Convertir de int a binario legible por humanos:
Puede pasar un entero a bin para ver la representación de cadena de un literal binario:
Y puedes combinar
bin
yint
para ir y venir:También puede usar una especificación de formato, si desea tener un ancho mínimo con ceros anteriores:
fuente
0 al comienzo aquí especifica que la base es 8 (no 10), lo cual es bastante fácil de ver:
Si no comienza con un 0, Python asume que el número es base 10.
fuente
Por lo que puedo decirle a Python, hasta 2.5, solo admite literales hexadecimales y octales. Encontré algunas discusiones sobre agregar binario a futuras versiones, pero nada definitivo.
fuente
Estoy bastante seguro de que esta es una de las cosas debido al cambio en Python 3.0 con quizás bin () para ir con hex () y oct ().
EDITAR: la respuesta de lbrandy es correcta en todos los casos.
fuente