파이썬 리터럴을 사용하여 정수를 이진수로 어떻게 표현합니까?
16 진수에 대한 답을 쉽게 찾을 수있었습니다.
>>> 0x12AF
4783
>>> 0x100
256
그리고 8 진법 :
>>> 01267
695
>>> 0100
64
파이썬에서 리터럴을 사용하여 바이너리를 어떻게 표현합니까?
답변 요약
- Python 2.5 및 이전 버전 :
int('01010101111',2)
리터럴을 사용 하지 않고 바이너리를 표현할 수 있습니다 . - Python 2.5 및 이전 버전 : 이진 리터럴을 표현할 방법 이 없습니다 .
- Python 2.6 베타 : 그렇게 할 수 있습니다 :
0b1100111
또는0B1100111
. - 파이썬 2.6 베타 : 8 진수를 나타내는
0o27
또는0O27
(두 번째 문자는 문자 O) 도 허용 합니다. - Python 3.0 베타 : 2.6과 동일하지만 더 이상
027
8 진수에 대한 이전 구문을 허용하지 않습니다 .
답변
참고로- 미래의 파이썬 가능성 :
파이썬 2.6부터는 접두사 0b 또는 0B를 사용하여 이진 리터럴을 표현할 수 있습니다 .
>>> 0b101111
47
새로운 bin 함수를 사용하여 숫자의 이진 표현을 얻을 수도 있습니다 .
>>> bin(173)
'0b10101101'
설명서의 개발 버전 : Python 2.6의 새로운 기능
답변
>>> print int('01010101111',2)
687
>>> print int('11111111',2)
255
또 다른 방법.
답변
파이썬에서 이진 리터럴을 어떻게 표현합니까?
그것들은 “이진”리터럴이 아니라 “정수 리터럴”입니다. 예를 들어 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'
답변
시작에서 0은 밑이 8 (10 아님)임을 나타내며,보기가 매우 쉽습니다.
>>> int('010101', 0)
4161
0으로 시작하지 않으면 파이썬은 숫자가 10을 가정합니다.
>>> int('10101', 0)
10101
답변
내가 말할 수있는 한, 2.5에서 2.5까지는 16 진 및 8 진 리터럴 만 지원합니다. 미래 버전에 바이너리를 추가하는 것에 대한 토론을 찾았지만 명확한 것은 없습니다.
답변
파이썬 3.0에서 아마도 bin ()을 hex () 및 oct ()와 함께 변경하여 파이썬 3.0에서 변경 한 것 중 하나라고 확신합니다.
편집 : lbrandy의 대답은 모든 경우에 맞습니다.
답변
