代码拉取完成,页面将自动刷新
// 版权所有 GoFrame 作者(https://goframe.org)。保留所有权利。
//
// 此源代码形式受 MIT 许可证的条款约束。
// 如果未随此文件一起分发 MIT 许可证的副本,
// 您可以在 https://github.com/gogf/gf 获取一个。
// md5:a114f4bdd106ab31
// gipv4 包提供了用于处理IPv4地址的有用API。 md5:dc7fb957be20c17f
package ipv4类
import (
"encoding/binary"
"fmt"
"net"
"strconv"
gregex "gitee.com/go_888/goframe/text/gregex"
)
// Ip转换到正整数32位 将IP地址转换为一个uint32整数。 md5:160031646344d859
func Ip转换到正整数32位(ip string) uint32 {
netIp := net.ParseIP(ip)
if netIp == nil {
return 0
}
return binary.BigEndian.Uint32(netIp.To4())
}
// X正整数32位转换到ip 将无符号 32 位整数形式的 IP 地址转换为字符串类型的地址。 md5:de7a5a15d74ae9b6
func X正整数32位转换到ip(long uint32) string {
ipByte := make([]byte, 4)
binary.BigEndian.PutUint32(ipByte, long)
return net.IP(ipByte).String()
}
// X是否为ipv4 检查给定的 `ip` 是否为有效的IPv4地址。 md5:d26ab457dd3beb9e
func X是否为ipv4(ip string) bool {
return gregex.X是否匹配文本(`^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$`, ip)
}
// X解析地址 将 `地址` 解析为它的IP和端口。
// 例如:192.168.1.1:80 -> 192.168.1.1, 80
// md5:224991801d25eab5
func X解析地址(地址与端口 string) (string, int) {
match, err := gregex.X匹配文本(`^(.+):(\d+)$`, 地址与端口)
if err == nil {
i, _ := strconv.Atoi(match[2])
return match[1], i
}
return "", 0
}
// Ip地址取ip段 返回给定IP地址的段。
// 例如:192.168.2.102 -> 192.168.2
// md5:6b442ab0a95dc737
func Ip地址取ip段(ip string) string {
match, err := gregex.X匹配文本(`^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$`, ip)
if err != nil || len(match) < 4 {
return ""
}
return fmt.Sprintf("%s.%s.%s", match[1], match[2], match[3])
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。