현재 ByteBuffer에서 짧은 값을 읽어 int에 적용합니다.int 캐스팅, 이상한 동작에 short
byte[] data = new byte{0x90, 0xAF};
ByteBuffer b = ByteBuffer.wrap(data);
int value = b.getShort();
하지만 value
지금 0xFFFF90AF
하지 0x90AF
이 포함되어 있습니다. 내 솔루션 0xFFFF
하여 값을 비트 마스크하는 것입니다 int value = b.getShort() & 0xFFFF;
은 내가 업 캐스팅은 항상 가능하다고 생각 short
이 int
보다 작은이기 때문이다. 누군가가 왜 이렇게 행동하는지 설명 할 수 있습니까?
사이드 코멘트 :'int'는'short'의 수퍼 타입이 아니기 때문에 'int'는'upcast *'가 아닙니다. 이것은 확대 변환이라고 불립니다. –