将byte或int转换为bitset

moe*_*sef 10 java type-conversion bitarray

我有以下内容:

int num=Integer.parseInt(lineArray[0]);
byte numBit= num & 0xFF;
Run Code Online (Sandbox Code Playgroud)

有没有非常简单的方法转换numBit为位数组?或者更好的是,有没有办法绕过int的字节转换并直接从num位数组?

谢谢

old*_*inb 10

如果你想要一个BitSet,试试:

final byte b = ...;
final BitSet set = BitSet.valueOf(new byte[] { b });
Run Code Online (Sandbox Code Playgroud)

如果你想要boolean[],

static boolean[] bits(byte b) {
  int n = 8;
  final boolean[] set = new boolean[n];
  while (--n >= 0) {
    set[n] = (b & 0x80) != 0;
    b <<= 1;
  }
  return set;
}
Run Code Online (Sandbox Code Playgroud)

或者,等效地,

static boolean[] bits(final byte b) {
  return new boolean[] {
    (b &    1) != 0,
    (b &    2) != 0,
    (b &    4) != 0,
    (b &    8) != 0,
    (b & 0x10) != 0,
    (b & 0x20) != 0,
    (b & 0x40) != 0,
    (b & 0x80) != 0
  };
}
Run Code Online (Sandbox Code Playgroud)


GKi*_*lin 5

Java 7 有 BitSet.valueOf(long[]) 和 BitSet.toLongArray()

int n = 12345;
BitSet bs = BitSet.valueOf(new long[]{n});
Run Code Online (Sandbox Code Playgroud)