diff --git a/hutool-core/src/main/java/cn/hutool/core/math/NumberUtil.java b/hutool-core/src/main/java/cn/hutool/core/math/NumberUtil.java
index 5ff7b4b00..7d00436d4 100644
--- a/hutool-core/src/main/java/cn/hutool/core/math/NumberUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/math/NumberUtil.java
@@ -2,7 +2,6 @@ package cn.hutool.core.math;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.lang.Assert;
-import cn.hutool.core.math.Calculator;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.CharUtil;
@@ -34,8 +33,7 @@ import java.util.Set;
*
* 相关介绍:
*
- * - http://www.oschina.net/code/snippet_563112_25237
- * - https://github.com/venusdrogon/feilong-core/wiki/one-jdk7-bug-thinking
+ * - one-jdk7-bug-thinking
*
*
* @author Looly
@@ -2454,7 +2452,7 @@ public class NumberUtil {
return 0L;
}
- if (number.startsWith("0x")) {
+ if(StrUtil.startWithIgnoreCase(number, "0x")){
// 0x04表示16进制数
return Long.parseLong(number.substring(2), 16);
}
@@ -2528,6 +2526,11 @@ public class NumberUtil {
* @since 4.1.15
*/
public static Number parseNumber(final String numberStr) throws NumberFormatException {
+ if(StrUtil.startWithIgnoreCase(numberStr, "0x")){
+ // 0x04表示16进制数
+ return Long.parseLong(numberStr.substring(2), 16);
+ }
+
try {
final NumberFormat format = NumberFormat.getInstance();
if (format instanceof DecimalFormat) {
diff --git a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java
index be0b18a20..4b1848923 100644
--- a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java
@@ -293,6 +293,13 @@ public class NumberUtilTest {
Assert.assertEquals(1482L, v2.longValue());
}
+ @Test
+ public void parseHexNumberTest() {
+ // 千位分隔符去掉
+ final int v1 = NumberUtil.parseNumber("0xff").intValue();
+ Assert.assertEquals(255, v1);
+ }
+
@Test
public void parseLongTest() {
long number = NumberUtil.parseLong("0xFF");