파이썬에서 이진 리터럴을 어떻게 표현합니까?
그것들은 "이진"리터럴이 아니라 "정수 리터럴"입니다. 예를 들어 0
다음에 a B
또는 b
뒤에 일련의 0과 1 이있는 이진 형식으로 정수 리터럴을 표현할 수 있습니다 .
>>> 0b0010101010
170
>>> 0B010101
21
Python 3 docs 에서 다음은 Python에서 정수 리터럴을 제공하는 방법입니다.
정수 리터럴은 다음 어휘 정의에 의해 설명됩니다.
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"
사용 가능한 메모리에 저장할 수있는 것 외에 정수 리터럴의 길이에는 제한이 없습니다.
0이 아닌 10 진수에서 선행 0은 허용되지 않습니다. 이것은 파이썬이 3.0 버전 이전에 사용했던 C 스타일 8 진 리터럴을 명확하게하기위한 것입니다.
정수 리터럴의 몇 가지 예 :
7 2147483647 0o177 0b100110111
3 79228162514264337593543950336 0o377 0xdeadbeef
100_000_000_000 0b_1110_0101
버전 3.6으로 변경 : 이제 밑줄을 리터럴로 그룹화 할 수 있습니다.
바이너리를 표현하는 다른 방법들 :
조작 할 수있는 문자열 객체에 0과 1을 가질 수 있습니다 (대부분의 경우 정수에서 비트 연산을 수행해야하지만)-0과 1의 문자열과 변환하는 밑을 int로 전달하십시오 (2 ) :
>>> int('010101', 2)
21
0b
또는 0B
접두사를 선택적으로 가질 수 있습니다 .
>>> int('0b0010101010', 2)
170
0
문자열을 밑으로 전달 하면 문자열에 접두사가 지정되지 않으면 밑이 10으로 가정됩니다.
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
int에서 사람이 읽을 수있는 바이너리로 다시 변환 :
이진 리터럴의 문자열 표현을 보려면 정수를 bin에 전달할 수 있습니다.
>>> bin(21)
'0b10101'
그리고 당신은 결합 할 수 있습니다 bin
및 int
앞뒤로 이동합니다 :
>>> bin(int('010101', 2))
'0b10101'
앞의 0으로 최소 너비를 원하면 형식 지정도 사용할 수 있습니다.
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'