Java 如何将位写入字节?

Java 如何将位写入字节?,java,byte,jdk1.6,bitset,Java,Byte,Jdk1.6,Bitset,我目前有16位我想设置为变量(2个单独的字节)。我使用了BitSet对象来保存我的位,而在Java 1.7中有一个toByteArray()方法,我需要一些可以在早期版本的Java上工作的方法。它不需要使用位集,但我更喜欢使用位集(如果可能的话) 如果有人能告诉我如何将011011这样的东西写入一个字节,我想这会对我有足够的帮助。谢谢 您可以使用这段代码来实现: public static byte convert(BitSet bits, int offset) { byte value

我目前有16位我想设置为变量(2个单独的字节)。我使用了BitSet对象来保存我的位,而在Java 1.7中有一个toByteArray()方法,我需要一些可以在早期版本的Java上工作的方法。它不需要使用位集,但我更喜欢使用位集(如果可能的话)


如果有人能告诉我如何将011011这样的东西写入一个字节,我想这会对我有足够的帮助。谢谢

您可以使用这段代码来实现:

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;
}

您可以使用这段代码来实现这一点:

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;
}

您是否尝试过
字节b=0;b |=(字节)0b01101011;断言Integer.tohextString(b).equals(“1101011”)
在Java 1.6上不起作用。使用Java 7编译它,它在Java 6上可以正常运行。二进制文本只在编译时存在。啊,酷。我试试看。assert和.equals的作用是什么?
assert
equals
仅用于演示;您可以阅读断言。您是否尝试过
字节b=0;b |=(字节)0b01101011;断言Integer.tohextString(b).equals(“1101011”)
在Java 1.6上不起作用。使用Java 7编译它,它在Java 6上可以正常运行。二进制文本只在编译时存在。啊,酷。我试试看。assert和.equals的作用是什么?
assert
equals
仅用于演示;你可以阅读断言。