2012-08-26 68 views
0

我目前有16位我想設置爲變量(2個獨立的字節)。我使用BitSet對象來保存我的位,而在Java 1.7中有一個toByteArray()方法,我需要一些適用於早期版本的Java的方法。它不需要使用BitSet,但我更喜歡它(如果可能)。如何將位寫入一個字節?

如果有人能告訴我如何寫一個像01101011這樣的字節,我認爲這對我來說足夠了。謝謝!

+1

你試過'字節B = 0; b | =(字節)0b01101011; assert Integer.toHexString(b).equals(「1101011」);' – oldrinb

+0

在Java 1.6上不起作用 – snotyak

+1

使用Java 7進行編譯,它將在Java 6上正常運行。二進制文字僅在編譯時存在。 – oldrinb

回答

1

您可以使用這段代碼來做到這一點:

public static byte convert(BitSet bits, int offset) { 
    byte value = 0; 
    for (int i = offset; (i < bits.length() && ((i + offset) < 8)) ; ++i) { 
    value += bits.get(i) ? (1 << i) : 0; 
    } 
    return value; 
} 

所以要轉換的兩個字節,你會做:

BitSet b = ....; 
byte b1 = Helper.convert(b, 0); 
byte b2 = Helper.convert(b, 8); 
+0

謝謝...這很快! – snotyak