2016-01-16 43 views
1

我有以下代码:这两个字节操作为什么不相等?

ByteBuffer bb = ByteBuffer.allocate(totalLength); 
bb.putShort(3); 
bb.putShort(0); 

bb.putInt(3 << 15 + 0); 

我不明白为什么把两个短值代入字节的缓冲区是不一样的第二操作

+0

它是(3 << 16)? – Toris

+0

您需要像其他人所说的那样转换16,但为什么要使用'+ 0'?它什么都不做。 – Andreas

+0

这里没有字节操作。有(1)两个短操作和(2)一个int操作,具有不同的值。 15应该是16。 – EJP

回答

1

尝试bb.putInt(3 << 16 + 0)代替:)

你也可以检查你的ByteBuffer有:

System.out.println(Arrays.toString(bb.array())); 
相关问题