code: public static long parseUnsignedLong(CharSequence s, final int start, final int end) throws NumberFormatException {
          long ret = 0;
          for (int i = start; i < end; i++) {
              final char c = s.charAt(i);
              if (c < '0' || c > '9') {
                  throw new NumberFormatException("Not a valid base-10 digit: " + c + " in " + s.subSequence(start, end));
              }
              final int val = c - '0';
              ret = ret * 10 + val;
          }
          return ret;
      }
docs: Parses out a long value from the provided string, equivalent to Long.parseLong(s.substring(start, end)),
  but has significantly less overhead, no object creation and later garbage collection required
  
  @throws {@link NumberFormatException} if it encounters any character that is not [0-9].