다음 질문은 bytes
문자열을 사전 키로 사용하고 동등한 것으로 간주되는 바이트 값을 동등한 것으로 취급하지 않았기 때문에 발생했습니다.바이트 리터럴의 파이썬 비교
다음 파이썬 코드가 동일하지 않은 이유는 무엇입니까? 동일한 바이너리 데이터 (이와 같이 endianess를 피하기 위해 의도적으로 선택한 예제)의 동일한 표현이 아닌 이유는 무엇입니까?
int(b'0b11111111', 2) == int(b'0xff', 16)
왜 파이썬 힘 나를 표현을 알고 않습니다
b'0b11111111' == b'0xff'
나는 다음은 동등성을 입증, 진정한 평가 알아? 그것은 엔디안과 관련이 있습니까? 다른 방법과 비교할 수있는 쉬운 방법이 있나요? 16 진수 리터럴? 누구든지 (다소) 플랫폼 독립적 인 방식으로 모든 표현 사이를 이동하는 투명하고 명확한 방법을 제안 할 수 있습니까 (아니면 너무 많이 묻는 것입니까?).
편집 : 아래의 코멘트를 감안할 때
, 나는 실제로 인덱스 형태로 b'0b11111111'
에 8 비트를 사용하여 사전, 왜 파이썬 10 바이트로 확장 않습니다하고 싶은 말은 내가 어떻게 방지합니까?
이것은 큰 트리 데이터 구조의 작은 부분이며 인덱스 80을 80 배 확대하면 엄청난 메모리 낭비처럼 보입니다.
그러나 '0b'는 'bytes'리터럴이 어떻게 해석했는지에 관계없이 이진 표현이되도록 의도되어 있지 않음을 나타 냅니까? –
@MatthewHemke : 단지 바이트 값 48과 그 뒤에 바이트 값 98이 있음을 의미합니다.이 값은 ASCII 문자 '0'과 'b'로 해석 가능합니다. –
그렇다면 어떻게하면 바이트 문자열이 정확하게 1 바이트가되는 것입니까? –