1 Star 0 Fork 0

c./goframe

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
gipv4.go 1.93 KB
一键复制 编辑 原始数据 按行查看 历史
// 版权所有 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])
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/go_888/goframe.git
git@gitee.com:go_888/goframe.git
go_888
goframe
goframe
782a3f7170cf

搜索帮助

0d507c66 1850385 C8b1a773 1850385