Go语言中ipv4与Uint32转换

简介

ip对于我们都不陌生,但是如果有一道题目要你判断某个ip在不在一个ip段的范围内,该怎么做呢,要是能把它弄成可比较的数字就好了

例如 127.0.0.1如何转数字呢,我们可以把它分成四段 127 0 0 1 每一段转为二进制拼起来 01111111 00000000 00000000 00000001

再转成uint32 变为 2130706433,这个时候就是一个数字了

实现

go 复制代码
func main() {
	ip := []int{127, 0, 0, 1}
	b := toInt(ip)
	fmt.Println(b)
}

func toInt(ip []int) uint32 {
	return uint32(ip[3]) | uint32(ip[2])<<8 | uint32(ip[1])<<16 | uint32(ip[0])<<24
}

输出2130706433

内置函数实现

其实在net包里也有相应的实现

代码如下

go 复制代码
func main() {
	b := Ipv4ToUint32("192.168.0.2")
	fmt.Println(b)
	fmt.Println(Uint32ToIpv4(b))
}

func Ipv4ToUint32(ip string) uint32 {
	netIp := net.ParseIP(ip)
	if netIp == nil {
		return 0
	}
	return binary.BigEndian.Uint32(netIp.To4())
}

func Uint32ToIpv4(ip uint32) string {
	ipByte := make([]byte, 4)
	binary.BigEndian.PutUint32(ipByte, ip)
	return net.IP(ipByte).String()
}

输出

3232235522
192.168.0.2

ip与int的转换就介绍到这


欢迎关注,学习不迷路!

相关推荐
VBsemi-专注于MOSFET研发定制5 分钟前
面向高可靠与快速响应需求的高端报警系统功率MOSFET选型策略与器件适配手册
网络·人工智能
默 语5 分钟前
AI Agent 数据感知层实战:网络端点定位在跨境电商、金融风控、自动化营销中的技术实现
网络·人工智能·自动化
科技牛牛9 分钟前
IP数据成新商业资源:如何合理利用IP地址进行精准营销
网络·运营·查询ip所在地·ip广告营销·ip数据
jieyucx13 分钟前
Go 语言函数入门:定义、参数、返回值
c++·算法·golang·入门·函数
想成为优秀工程师的爸爸15 分钟前
第二十四篇技术笔记:郭大侠学DoIP - 从“偶睡破庙”到“天字一号”
网络·笔记·网络协议·tcp/ip·信息与通信
XMYX-016 分钟前
20 - Go 互斥锁:Mutex 与并发安全
开发语言·golang
学术小白人17 分钟前
【见刊通知】ICGEM E2025、IPAT 2025、AISNS 2026、IEAS 2025、BTFM 2026 等数个会议已见刊
运维·服务器·检索·rdlink研发家·见刊
郝学胜-神的一滴17 分钟前
深入epoll封装:event_set与event_add核心原理剖析
linux·服务器·开发语言·网络·c++·unix
HABuo21 分钟前
【linux(四)】套接字编程--socket套接字及其接口认识
linux·运维·服务器·c语言·c++·ubuntu·centos
JS_SWKJ21 分钟前
主流网络安全设备知识详解:筑牢数字时代安全屏障
网络