我目前从 ByteBuffer 读取一个短值并将其应用于 int。
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
. 有人可以解释为什么它会这样吗?