ByteArrayHelper { public static void shiftArray(byte[] input, byte[] output, int positions) { for (int i = 0; i < input.length * 8; i++) { setBit(output, positions + i, getBit(input, i)); } } private  ByteArrayHelper(); static boolean getBit(byte[] input, int index); static void setBit(byte[] input, int index, boolean choice); static void xor(List<byte[]> vector1, List<byte[]> vector2); static void xor(byte[] arr1, byte[] arr2); static void shiftArray(byte[] input, byte[] output, int positions);  }
@Test public void testShiftArray() { byte[] input = new byte[] { (byte) 0x80, (byte) 0x01 }; byte[] output = new byte[4]; ByteArrayHelper.shiftArray(input, output, 1); byte[] expected = new byte[] { (byte) 0x40, (byte) 0x00, (byte) 0x80, (byte) 0x00 }; for (int i = 0; i < 4; i++) { assertEquals(expected[i], output[i]); } }
@Test public void testShiftArray2() { byte[] input = new byte[] { (byte) 0x80, (byte) 0x01 }; byte[] output = new byte[4]; ByteArrayHelper.shiftArray(input, output, 8); byte[] expected = new byte[] { (byte) 0x00, (byte) 0x80, (byte) 0x01, (byte) 0x00 }; for (int i = 0; i < 4; i++) { assertEquals(expected[i], output[i]); } }
@Test public void testShiftArray3() { byte[] input = new byte[] { (byte) 0x80, (byte) 0x01 }; byte[] output = new byte[4]; ByteArrayHelper.shiftArray(input, output, 15); byte[] expected = new byte[] { (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x02 }; for (int i = 0; i < 4; i++) { assertEquals(expected[i], output[i]); } }