2013-07-19 4 views
3
나는 하나 개의 테스트 할 파이썬을 사용하고

: 나는 '파이썬 struct.error : USHORT 형식은 필요 0 <= 숫자 <= USHRT_MAX

struct.error: ushort format requires 0 <= number <= USHRT_MAX

: 그것은 저에게이 오류가 표시

print struct.pack('1H', 101000) 

을 이것은 혼란 스럽다. 1H는 unsigned short를 의미한다. 이것은 처음 비트가 사용될 수 있음을 의미하므로, 1H의 최대 범위는 0이되어야한다. < = number < = (2 < < 16) -1 (131071을 의미 함) 왜 내가이 오류를 보여 줍니까?

답변

6

최대 값은 (2<<16) - 1이 아니므로 2^16-1입니다. 또는 시프트로 쓰고 싶으면 (1<<16) - 1. 번호 2는 이미 한 곳 왼쪽으로 옮겨졌습니다. 부호없는 short (16 비트)의 최대 값은 65535입니다.

+0

대단히 감사합니다! 이것이 바보 같은 질문 임에도 불구하고 내 이해를 명확히하는 데 많은 도움이된다. – levi

관련 문제