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