Long (String text) { if (StringUtil.endsWithChar(text, 'L') || StringUtil.endsWithChar(text, 'l')) { text = text.substring(0, text.length() - 1); } try { if (text.startsWith(HEX_PREFIX)) { return parseDigits(text.substring(2), 4, 64); } if (text.startsWith(BIN_PREFIX)) { return parseDigits(text.substring(2), 1, 64); } if (StringUtil.startsWithChar(text, '0')) { // should fit in 64 bits return parseDigits(text, 3, 64); } if (_2_IN_63.equals(text)) return Long.valueOf(-1L << 63); return Long.valueOf(text, 10); } catch (NumberFormatException e) { return null; } }