aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-core/src/main/java/com/github/javaparser/ast/expr
diff options
context:
space:
mode:
authorabosch <arturbosch@gmx.de>2017-03-17 11:40:50 +0100
committerabosch <arturbosch@gmx.de>2017-03-17 11:40:50 +0100
commite9ddd2113b10c47c6c90f80e2a8aff0b368f1fd6 (patch)
tree70152d41fc3d70c2f6016c3f509e45b3e4883ef6 /javaparser-core/src/main/java/com/github/javaparser/ast/expr
parent9b84dccbbfdedb7194c08bf527993d1087d84975 (diff)
downloadplatform_external_javaparser-e9ddd2113b10c47c6c90f80e2a8aff0b368f1fd6.tar.gz
platform_external_javaparser-e9ddd2113b10c47c6c90f80e2a8aff0b368f1fd6.tar.bz2
platform_external_javaparser-e9ddd2113b10c47c6c90f80e2a8aff0b368f1fd6.zip
Convert binary, octal or hex numbers - #663
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/expr')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java12
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java16
2 files changed, 26 insertions, 2 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java
index b26106c9e..58fd20392 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java
@@ -76,7 +76,17 @@ public class IntegerLiteralExpr extends LiteralStringValueExpr {
}
public int asInt() {
- return Integer.parseInt(value);
+ String result = value.replaceAll("_", "");
+ if (result.startsWith("0x")) {
+ return Integer.parseUnsignedInt(result.substring(2), 16);
+ }
+ if (result.startsWith("0b")) {
+ return Integer.parseUnsignedInt(result.substring(2), 2);
+ }
+ if (result.startsWith("0")) {
+ return Integer.parseUnsignedInt(result.substring(1), 8);
+ }
+ return Integer.parseInt(result);
}
public IntegerLiteralExpr setInt(int value) {
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java
index af11154d3..0db0b9b12 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java
@@ -76,7 +76,21 @@ public class LongLiteralExpr extends LiteralStringValueExpr {
}
public long asLong() {
- return Long.parseLong(value);
+ String result = value.replaceAll("_", "");
+ char lastChar = result.charAt(result.length() - 1);
+ if (lastChar == 'l' || lastChar == 'L') {
+ result = result.substring(0, result.length() - 1);
+ }
+ if (result.startsWith("0x")) {
+ return Long.parseUnsignedLong(result.substring(2), 16);
+ }
+ if (result.startsWith("0b")) {
+ return Long.parseUnsignedLong(result.substring(2), 2);
+ }
+ if (result.startsWith("0")) {
+ return Long.parseUnsignedLong(result.substring(1), 8);
+ }
+ return Long.parseLong(result);
}
public LongLiteralExpr setLong(long value) {