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; *

* 相关介绍: * * * @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");