ArrayUtils { public static byte[] concatenate(byte[] a, byte b) { return concatenate(a, new byte[]{b}); }  static byte[] reverseArray(byte[] array); static byte[] concatenate(byte[] a, byte b); static byte[] concatenate(byte a, byte[] b); static byte[] concatenate(byte[]... arrays); static byte[] concatenate(byte[] a, byte[] b); static byte[] getFirstNBytes(byte[] array, int nBytes); static byte[] getLastNBytes(byte[] array, int nBytes); static byte[] xor(byte[] array1, byte[] array2); static byte[] trimLeadingBytes(byte[] bytes, byte b); static byte[] trimLeadingZeroes(byte[] bytes); static byte[] trimTrailingBytes(byte[] bytes, byte b); static byte[] toPrimitive(final Byte[] array); static byte[] toByteArray(int v); static byte[] toByteArray(long v);  }
@Test public void testConcatenate() { assertThat(concatenate(new byte[]{0x01, 0x02, 0x03}, new byte[]{0x04}), is(new byte[]{0x01, 0x02, 0x03, 0x04})); assertThat(concatenate(new byte[]{0x01, 0x02, 0x03}, (byte) 0x04), is(new byte[]{0x01, 0x02, 0x03, 0x04})); assertThat(concatenate((byte) 0x04, new byte[]{0x01, 0x02, 0x03}), is(new byte[]{0x04, 0x01, 0x02, 0x03})); assertThat(concatenate(new byte[]{0x01, 0x02, 0x03}, new byte[]{0x01, 0x02, 0x03}, new byte[]{0x04}), is(new byte[]{0x01, 0x02, 0x03, 0x01, 0x02, 0x03, 0x04})); assertThat(concatenate(new byte[]{}, new byte[]{0x01, 0x02, 0x03}, new byte[]{}, new byte[]{0x01}), is(new byte[]{0x01, 0x02, 0x03, 0x01})); }