### Question:
ByteUtil { public static int bytesIndexOf(byte[] source, byte[] target, int begin) { if (source == null || target == null || target.length == 0 || source.length < target.length) return -1; int i, j, max = source.length - target.length; for (i = begin; i <= max; i++) { if (source[i] == target[0]) { for (j = 1; j < target.length; j++) { if (source[i + j] != target[j]) break; } if (j == target.length) return i; } } return -1; }  static byte[] int2BytesBigEndian(int i); static int bytes2IntBigEndian(byte... bytes); static byte[] long2BytesBigEndian(long l); static long bytes2LongBigEndian(byte... bytes); static byte[] int2BytesLittleEndian(int i); static int bytes2IntLittleEndian(byte... bytes); static byte[] long2BytesLittleEndian(long l); static long bytes2LongLittleEndian(byte... bytes); static byte[] reverse(byte... bytes); static int bytesIndexOf(byte[] source, byte[] target, int begin); static byte bbc(byte... datas); static byte[] crc16Modbus(byte... datas);  }### Answer:
@Test public void bytesIndexOf() { assertEquals(2, ByteUtil.bytesIndexOf(new byte[]{(byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6}, new byte[]{(byte) 0xF3, (byte) 0xF4}, 0)); }