我目前從一個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
小。有人可以解釋爲什麼它的行爲如此嗎?
一個方面的評論:'short'到'int'不是* upcast *,因爲'int'不是'short'的超類型。它被稱爲*擴展轉換*。 –