2016-01-16 68 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())); 
相關問題