{
if (! isInteger(val)) {
return (-1L);
}
Parser p = new Parser(val);
String iStr = p.parseNINT();
if (iStr.charAt(0) == '+') {
iStr = iStr.substring(1);
}
long i = Long.parseLong(iStr);
if (p.isEnd()) {
/* NINT */
return i;
} else {
/* EXINT */
Character uChar = p.parseINTUNIT();
char u = Character.toUpperCase(uChar.charValue());
long unit = 1L;
switch (u) {
case 'K':
unit = 1024L; break;
case 'M':
unit = 1024L * 1024L; break;
case 'G':
unit = 1024L * 1024L * 1024L; break;
case 'T':
unit = 1024L * 1024L * 1024L * 1024L; break;
case 'P':
unit = 1024L * 1024L * 1024L * 1024L * 1024L; break;
default:
return (-1L);
}
if (! p.isEnd()) { return (-1L); }
long ret = i * unit;
/* check overflow */
if (ret / i == unit && ret / unit == i) {
return ret;