0
我目前有16位我想设置为变量(2个独立的字节)。我使用BitSet对象来保存我的位,而在Java 1.7中有一个toByteArray()方法,我需要一些适用于早期版本的Java的方法。它不需要使用BitSet,但我更喜欢它(如果可能)。如何将位写入一个字节?
如果有人能告诉我如何写一个像01101011这样的字节,我认为这对我来说足够了。谢谢!
我目前有16位我想设置为变量(2个独立的字节)。我使用BitSet对象来保存我的位,而在Java 1.7中有一个toByteArray()方法,我需要一些适用于早期版本的Java的方法。它不需要使用BitSet,但我更喜欢它(如果可能)。如何将位写入一个字节?
如果有人能告诉我如何写一个像01101011这样的字节,我认为这对我来说足够了。谢谢!
您可以使用这段代码来做到这一点:
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);
谢谢...这很快! – snotyak
你试过'字节B = 0; b | =(字节)0b01101011; assert Integer.toHexString(b).equals(“1101011”);' – oldrinb
在Java 1.6上不起作用 – snotyak
使用Java 7进行编译,它将在Java 6上正常运行。二进制文字仅在编译时存在。 – oldrinb