2017-05-02 1 views
0

'데이터'를 매개 변수로 허용하는 함수가 있습니다. 파이썬에 익숙하지 않았기 때문에 그 유형조차도 확실하지 않았습니다. 파이썬은 비트 단위로 정의합니다.

는 그 종류의 무언가를 인쇄 할 때 내가 편지 H를 인코딩 된 경우가

b'h' 

을 것났습니다. 어느 날 나 한테 이해가 안가. 파이썬에서 1이나 0과 같은 비트를 정의하는 방법이 있나요? b'h가 16 진수 여야합니다. 8 비트 문자열을 간단히 정의 할 수있는 방법이 있습니까?

bits1 = 10100000 
+0

"데이터"는 의미가 없도록 광범위합니다. 바이너리 데이터를 원하십니까? – deceze

+0

출력 결과에'b' 접두사가 포함되어 있다고 가정 했으므로 파이썬 3이라고 가정합니다 (파이썬 2에서는'bytes == str'이기 때문입니다). 이것이 올바르지 않으면 Python 2가 사용 중임을 나타내도록 변경하십시오. –

답변

3

관련이없는 여러 가지 항목이 서로 얽혀 있습니다.

우선 (파이썬 3에서) b이라는 접두사가 붙은 인용 리터럴은 bytes입니다. 이는 원시 바이트 값의 문자열을 의미합니다. 예 :

x = b'abc' 
print(type(x))  # will output `<class 'bytes'>` 

이는 (유니 코드) 문자열이다 str 유형 대조적이다.

정수 리터럴은 0b이라는 접두어를 사용하여 2 진수로 표현할 수 있습니다.

y = 0b10100000 
print(y)   # Will output 160 
0

'데이터'는 유형이 아닙니다. 함수 (아마)는 유형에 관계없이 전달한 모든 것을 허용합니다.

지금, b'h' 수단이 16 진수 않음 "그의 이진 시퀀스 숯 'h' 매핑 번호 (INT)"있지만, 아마도 8 비트 (int의 표준 크기는 1 바이트와 수 및 char).

'h'의 ASCII 코드는 b '\ b01101000'또는 hexa b '\ x68'인 이진수로 작성된 104 (십진수)입니다.

그래서, 여기 당신이 찾고있는 대답은 : 이진 표현에서 8 비트 int를 코딩하려는 경우 그냥 b'\b01101000' (104)을 입력하십시오. 더 조밀하고 읽기 쉽도록 대신에 hexa를 사용하는 것이 좋습니다. 헥사에서는 4 비트마다 0에서 f까지 심볼을 만들고 심볼을 4 비트마다 연결하여 더 큰 숫자를 만들 수 있습니다. 따라서 비트 시퀀스 01101000은 b '\ b0110 \ b1000'또는 b '\ x6 \ x8'로 쓰여지고 b '\ x68'로 쓰여질 수 있습니다. 앞의 b는 따옴표 앞에 python이 이스케이프 문자 대신 \ b 또는 \ x (또는 십진수는 \ d)로 정의 된 기본 문자열로 표현 된 이진 시퀀스로 해석합니다.

관련 문제