2013-04-01 79 views
1

如何在java中將變量分割爲單個字節?我有以下例如在C++代碼片段:從java中的多字節變量中獲取單個字節

unsigned long someVar; 
    byte *p = (byte*)(void*) someVar; // byte being typedef unsigned char (from 0 to 255) 

    byte *bytes = new byte[sizeof(someVar)]; 

    for(byte i = 0;i<sizeof(someVar);i++) 
    { 
     bytes[i] = *p++; 
    } 

    .... //do something with bytes 

我要完成下的Java一樣,但我似乎無法找到一個明顯的解決方法。

+1

這是C++,而不是C. –

+0

@ChristofferHammarström,絕對正確。改變了問題。 –

+0

你看起來像這樣嗎? http://stackoverflow.com/questions/1936857/convert-integer-into-byte-array-java – Dinakar

回答

3

有兩種方法可以使用ByteBuffer類。一種是動態創建一個新的字節數組。

long value = 123; 
byte[] bytes = ByteBuffer.allocate(8).putLong(value).array(); 

另一個是寫入現有的數組。

long value = 123; 
byte[] bytes = new byte[8]; 

ByteBuffer.wrap(bytes).putLong(value); 

// bytes now contains the byte representation of 123. 
+0

問題有點不同:如果你有一些變量 - 如何以字節爲單位訪問它 – pmod

+0

你可以在ByteBuffer中包裝一個變量並調用get(),它將逐字節地返回值。 – Tansir1

+0

謝謝,這正是我所需要的,正如其中一條評論中提供的鏈接所指出的那樣。 –

0

如果您使用番石榴,有一個便利Longs.toByteArray。它只是上面John的ByteBuffer答案的一個包裝,但是如果你已經使用了Guava,那麼讀起來會稍微「更好」。

相關問題