Jak wyrażasz liczbę całkowitą jako liczbę binarną za pomocą literałów Python?
Z łatwością mogłem znaleźć odpowiedź na hex:
>>> 0x12AF
4783
>>> 0x100
256
i ósemkowe:
>>> 01267
695
>>> 0100
64
Jak używasz literałów do wyrażenia binarnego w Pythonie?
Podsumowanie odpowiedzi
- Python 2.5 i wcześniejsze: mogą wyrażać binarnie używając
int('01010101111',2)
literału, ale nie. - Python 2.5 i wcześniejsze: nie ma możliwości wyrażenia literałów binarnych.
- Python 2.6 beta: Możesz to zrobić tak:
0b1100111
lub0B1100111
. - Python 2.6 beta: pozwoli również
0o27
lub0O27
(drugim znakiem jest litera O) do reprezentowania ósemki. - Python 3.0 beta: Taki sam jak 2.6, ale nie pozwoli już na starszą
027
składnię ósemkową.
Nie są to literały „binarne”, lecz „literały całkowite”. Możesz wyrażać literały całkowite w formacie binarnym,
0
po którym następuje aB
lubb
po nich ciąg zer i jedynek, na przykład:Z dokumentacji w Pythonie 3 są następujące sposoby zapewnienia literałów całkowitych w Pythonie:
Inne sposoby wyrażenia binarnego:
Możesz mieć zera i jedynki w obiekcie łańcuchowym, którymi można manipulować (chociaż w większości przypadków prawdopodobnie powinieneś po prostu wykonać operacje bitowe na liczbie całkowitej) - po prostu przekaż int ciąg zer i jedynek oraz bazę, z której konwertujesz (2 ):
Opcjonalnie możesz mieć prefiks
0b
lub0B
:Jeśli przekażesz go
0
jako podstawę, przyjmie on podstawę 10, jeśli ciąg nie zostanie określony z prefiksem:Konwertowanie z int z powrotem na binarny czytelny dla człowieka:
Możesz podać liczbę całkowitą do bin, aby zobaczyć ciąg reprezentujący literał binarny:
Możesz łączyć
bin
iint
poruszać się w tę iz powrotem:Możesz również użyć specyfikacji formatu, jeśli chcesz mieć minimalną szerokość z poprzedzającymi zerami:
źródło
0 na początku oznacza, że podstawa to 8 (nie 10), co jest dość łatwe do zauważenia:
Jeśli nie zaczynasz od 0, python zakłada, że liczba wynosi 10.
źródło
O ile mogę powiedzieć, Python, do wersji 2.5, obsługuje tylko literały szesnastkowe i ósemkowe. Znalazłem kilka dyskusji na temat dodawania plików binarnych do przyszłych wersji, ale nic konkretnego.
źródło
Jestem prawie pewien, że jest to jedna z rzeczy ze względu na zmianę w Pythonie 3.0 z być może bin (), aby przejść z hex () i oct ().
EDYCJA: odpowiedź lbrandy jest poprawna we wszystkich przypadkach.
źródło