diff options
author | abosch <arturbosch@gmx.de> | 2017-03-17 11:40:50 +0100 |
---|---|---|
committer | abosch <arturbosch@gmx.de> | 2017-03-17 11:40:50 +0100 |
commit | e9ddd2113b10c47c6c90f80e2a8aff0b368f1fd6 (patch) | |
tree | 70152d41fc3d70c2f6016c3f509e45b3e4883ef6 /javaparser-core/src/main/java/com/github/javaparser/ast | |
parent | 9b84dccbbfdedb7194c08bf527993d1087d84975 (diff) | |
download | platform_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')
-rw-r--r-- | javaparser-core/src/main/java/com/github/javaparser/ast/expr/IntegerLiteralExpr.java | 12 | ||||
-rw-r--r-- | javaparser-core/src/main/java/com/github/javaparser/ast/expr/LongLiteralExpr.java | 16 |
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) { |