2012-10-31 40 views
-1

作爲輸入,我得到了一個short數組,如{20,250,12,255}。
我需要將其轉換爲byte [] {20,-6,12,-1}
我試圖使用的ByteBuffer:將短陣列轉換爲Java中的帶符號字節數組

short[] data = {20, 250, 12, 255};  
    ByteBuffer dbuf = ByteBuffer.allocate(data.length*2); 
    dbuf.asShortBuffer().put(data); 
    byte[] array = dbuf.array(); 

但輸出格式化爲: {0,20,0 ,-6,0,12,0,-1}
如何得到像{20,-6,12,-1}這樣的有符號字節數組?

+1

'在Java中byte'簽署。有沒有這樣的事情,一個字節值爲255. –

+0

最簡單的方法就是循環訪問值,並使用'(byte)'強制轉換從短數組分配給字節數組。創建一個ByteBuffer會更慢,更模糊,並且更容易出錯。 –

回答

3

只需簡單地使用由於java中的byte被燒結而被簽名的byte []。如果你想要這樣的輸出,沒有必要轉換成短路。


以下只是轉換機制,如果你不能。

在陣列上循環並進行向下投射。

short[] data = { 20, 250, 12, 255 }; 
    byte[] bytes = new byte[data.length]; 
    int count = 0; 
    for (short i : data) { 
     bytes[count++] = (byte)i; 
    } 
    System.out.println(Arrays.toString(bytes)); 

輸出:

[20, -6, 12, -1] 
相關問題