Java 中 int 轉換為無符號位元組
瀏覽人數:545最近更新:
一、簡介
在Java中, byte組類型是有符號的8位元整數。這意味著它可以保存從 -128 到 127 的bytes 。重要,以及常見無符號位元組的檔案 I/O。
在本教程中,我們將發現兩種在 Java 中將int轉換為無符號byte的方法。
2. 使用類型轉換和位元掩碼
最常見的方法是結合使用類型轉換和位元遮罩。讓我們來探索一下實作:
int value = 200;
@Test
public void givenInt_whenUsingTypeCastingAndBitMasking_thenConvertToUnsignedByte() {
byte unsignedByte = (byte) (value & 0xFF);
assertEquals(value, Byte.toUnsignedInt(unsignedByte));
}
在此測試中,我們首先初始化整數值200 。然後,我們使用表達式 ( value & 0xFF ) 將該整數轉換為無符號byte表示形式。此操作涉及整數值和十六進位值0xFF之間的位元 AND 運算,對應十進位的255或二進位的11111111 。
透過執行位元 AND 運算,我們確保只保留整數值的最低有效 8 位,從而有效地丟棄任何高階位。因此,( value & 0xFF ) 的結果值表示 0 到 255 範圍內的無符號byte byte 。類型的相容性。
隨後,在取得該位元組表示形式後,我們利用Byte.toUnsignedInt()方法將其正確解釋為無符號值。
3.使用ByteBuffer
另一種方法涉及使用ByteBuffer類別將 int 轉換為byte數組,然後提取byte :
@Test
public void givenIntInRange_whenUsingByteBuffer_thenConvertToUnsignedByte() {
int value = 200;
ByteBuffer buffer = ByteBuffer.allocate(4).putInt(value);
byte unsignedByte = buffer.array()[3];
assertEquals(value, Byte.toUnsignedInt(unsignedByte));
}
這裡,我們分配一個4位元組的ByteBuffer來儲存整數值。然後,我們利用putInt(value)方法將整數儲存在緩衝區中。由於buffer預設以大端順序儲存值,因此最低有效位元組(我們需要的)是緩衝區中的第四個位元組(索引 3)。
4。
總而言之,雖然 Java 缺乏無符號byte類型,但各種技術(例如類型轉換與位元遮罩結合或使用ByteBuffer提供了將 int 轉換為無符號位元組的有效方法,這對於需要表示0 到255之間的值的場景至關重要。
與往常一樣,本文的完整程式碼範例可以在 GitHub 上找到。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議