reo*_*eox 2 java casting bytebuffer
我目前从ByteBuffer读取一个短值并将其应用于int.
byte[] data = new byte{0x90, 0xAF};
ByteBuffer b = ByteBuffer.wrap(data);
int value = b.getShort();
Run Code Online (Sandbox Code Playgroud)
但是value包含现在0xFFFF90AF而不是0x90AF.我的解决方案是通过0xFFFF以下方式将值掩盖:int value = b.getShort() & 0xFFFF;
我认为一个上流总是可能的,因为short小于int.有人能解释为什么它会像这样吗?