ByteArrayUtil { public static BitSet toBitSet(byte[] array) { BitSet bitSet = new BitSet(8 * array.length); for (int byteNo = 0; byteNo < array.length; byteNo++) { byte b = array[byteNo]; for (int bitNo = 0; bitNo < 8; bitNo++) { if ((b & byteMask(bitNo)) != 0) { bitSet.set(8 * byteNo + bitNo); } } } return bitSet; }  static void put(byte[] source, byte[] target, int offset); static byte[] get(byte[] array, int offset); static byte[] get(byte[] array, int offset, int length); static void putInt(int value, byte[] array, int offset); static int getInt(byte[] array, int offset); static void putLong(long value, byte[] array, int offset); static long getLong(byte[] array, int offset); static int find(byte[] a, int fromIndex, int toIndex, byte key); static int find(byte[] a, int fromIndex, int toIndex, byte[] key); static boolean matchesPattern(byte[] value, byte[] mask, byte[] pattern); static boolean regionMatches(byte[] subValue, byte[] superValue, int offset); static int compareRegion(byte[] array1, int startIdx1, byte[] array2, int startIdx2, int length); static BitSet toBitSet(byte[] array); static byte[] toByteArray(BitSet bitSet); static String toHexString(byte[] array);  }
@Test public void testToBitSet() { assertEquals(new BitSet(), ByteArrayUtil.toBitSet(new byte[] {})); final BitSet bitSet = ByteArrayUtil.toBitSet(new byte[] { 1, 2, 3, 4 }); assertArrayEquals(new byte[] { -128, 64, -64, 32 }, bitSet.toByteArray()); }