ByteArrayUtil { public static String toHexString(byte[] array) { StringBuilder sb = new StringBuilder(2 * array.length); for (int i = 0; i < array.length; i++) { String hex = Integer.toHexString(array[i] & 0xff); if (hex.length() == 1) { sb.append('0'); } sb.append(hex); } return sb.toString(); }  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 testToHexString() { assertEquals("", ByteArrayUtil.toHexString(new byte[] {})); assertEquals("1a", ByteArrayUtil.toHexString(new byte[] { 0x1A })); assertEquals("1a2b3c", ByteArrayUtil.toHexString(new byte[] { 0x1A, 0x2B, 0x3C })); assertEquals("010203", ByteArrayUtil.toHexString(new byte[] { 0x01, 0x02, 0x03 })); }