1
我有以下代码:这两个字节操作为什么不相等?
ByteBuffer bb = ByteBuffer.allocate(totalLength);
bb.putShort(3);
bb.putShort(0);
bb.putInt(3 << 15 + 0);
我不明白为什么把两个短值代入字节的缓冲区是不一样的第二操作
我有以下代码:这两个字节操作为什么不相等?
ByteBuffer bb = ByteBuffer.allocate(totalLength);
bb.putShort(3);
bb.putShort(0);
bb.putInt(3 << 15 + 0);
我不明白为什么把两个短值代入字节的缓冲区是不一样的第二操作
尝试bb.putInt(3 << 16 + 0)
代替:)
你也可以检查你的ByteBuffer
有:
System.out.println(Arrays.toString(bb.array()));
它是(3 << 16)? – Toris
您需要像其他人所说的那样转换16,但为什么要使用'+ 0'?它什么都不做。 – Andreas
这里没有字节操作。有(1)两个短操作和(2)一个int操作,具有不同的值。 15应该是16。 – EJP