將Short轉換為byte[]陣列是 Java 程式設計中的常見任務,尤其是在處理二進位制資料或網路通訊時。
在本教程中,我們將探索有效實現此轉換的各種方法。
使用ByteBuffer類(Java NIO)
Java NIO包提供了ByteBuffer類,它簡化了原始資料型別到位元組陣列的轉換。讓我們看一下如何使用它將短值轉換為byte[]陣列:
short shortValue = 12345; |
在這個方法中,我們使用allocate()方法分配一個容量為 2 個位元組的ByteBuffer來容納ShortValue。接下來,我們利用putShort()方法將ShortValue的二進位制表示形式寫入緩衝區物件。此操作導致緩衝區包含ShortValue的位元組表示形式。
然後,我們使用array()方法從緩衝區中提取名為byteArray的位元組陣列,該方法檢索與儲存的短值對應的位元組陣列。
最後,我們使用assertArrayEquals()方法斷言byteArray與expectedByteArray匹配,確保轉換過程的準確性。
使用DataOutputStream類
另一種方法是利用DataOutputStream類,它提供了一種完成轉換過程的有效方法。讓我們看看如何實現這種方法:
@Test |
在此測試方法中,我們首先利用DataOutputStream類將短值寫入名為baos的ByteArrayOutputStream物件。
此外,我們呼叫writeShort()方法將ShortValue序列化為表示其二進位制形式的兩個位元組。隨後,我們使用toByteArray()方法從baos中檢索結果位元組陣列。
手動位操作
此方法透過顯式操作短值的位來將最高有效位元組(MSB) 和最低有效位元組(LSB) 元件隔離並儲存在位元組陣列的相應位置,從而有效地將短值轉換為位元組陣列。
讓我們深入研究一下實現:
@Test |
在這裡,我們首先透過將shortValue右移8位(shortValue >> 8 )來提取MSB ,並將結果轉換為位元組以儲存在byteArray[0]中。類似地, shortValue的最低有效位元組 (LSB)是透過將其直接轉換為位元組然後將其儲存在byteArray[1] 中獲得的。