diff --git a/hutool-core/src/main/java/cn/hutool/core/net/Ipv4Util.java b/hutool-core/src/main/java/cn/hutool/core/net/Ipv4Util.java index 886f9c47f..15adb041c 100755 --- a/hutool-core/src/main/java/cn/hutool/core/net/Ipv4Util.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/Ipv4Util.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.ListUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.PatternPool; +import cn.hutool.core.lang.Validator; import cn.hutool.core.util.CharUtil; import cn.hutool.core.util.StrUtil; @@ -168,6 +169,16 @@ public class Ipv4Util { throw new IllegalArgumentException("Invalid IPv4 address!"); } + /** + * 根据ip地址(xxx.xxx.xxx.xxx)计算出long型的数据, 如果格式不正确返回 defaultValue + * @param strIP IP V4 地址 + * @param defaultValue 默认值 + * @return long值 + */ + public static long ipv4ToLong(String strIP, long defaultValue) { + return Validator.isIpv4(strIP) ? ipv4ToLong(strIP) : defaultValue; + } + /** * 根据 ip/掩码位 计算IP段的起始IP(字符串型) * 方法别名:inet_ntoa diff --git a/hutool-core/src/test/java/cn/hutool/core/net/Ipv4UtilTest.java b/hutool-core/src/test/java/cn/hutool/core/net/Ipv4UtilTest.java index 13d5ddbd1..3d590f9b0 100644 --- a/hutool-core/src/test/java/cn/hutool/core/net/Ipv4UtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/net/Ipv4UtilTest.java @@ -86,4 +86,17 @@ public class Ipv4UtilTest { l = Ipv4Util.ipv4ToLong("255.255.255.255"); Assert.assertEquals(4294967295L, l); } + + @Test + public void ipv4ToLongWithDefaultTest() { + String strIP = "不正确的 IP 地址"; + long defaultValue = 0L; + long ipOfLong = Ipv4Util.ipv4ToLong(strIP, defaultValue); + Assert.assertEquals(ipOfLong, defaultValue); + + String strIP2 = "255.255.255.255"; + long defaultValue2 = 0L; + long ipOfLong2 = Ipv4Util.ipv4ToLong(strIP2, defaultValue2); + Assert.assertEquals(ipOfLong2, 4294967295L); + } }