public static String byteToHexString(final byte[] bytes, final int start, final int end) {
        if (bytes == null) {
            throw new IllegalArgumentException("bytes == null");
        }

        int length = end - start;
        char[] out = new char[length * 2];

        for (int i = start, j = 0; i < end; i++) {
            out[j++] = HEX_CHARS[(0xF0 & bytes[i]) >>> 4];
            out[j++] = HEX_CHARS[0x0F & bytes[i]];
        }

        return new String(out);
    }
@Test
    void testHexArrayToString() {
        byte[] byteArray = new byte[] {1, -97, 49, 74};
        String hex = StringUtils.byteToHexString(byteArray);
        assertThat(hex).isEqualTo("019f314a");
    }