docs: public static String toHex(byte[] bytes, int offset, int length, String separator) {
        StringBuffer result = new StringBuffer();
        for (int i = 0; i < length; i++) {
           int unsignedByte = bytes[i + offset] & 0xff;
  
           if (unsignedByte < 16) {
              result.append("0");
           }
  
           result.append(Integer.toHexString(unsignedByte));
           if (separator != null && i + 1 < length) {
              result.append(separator);
           }
        }
        return result.toString();
     }