Golang IPv4/IPv6转整型

T
TrumanWong
2/24/2022

类型转换使用math/big

IPv4/IPv6转整型

func IP2Long(ipAddress string) *big.Int {
	ip := net.ParseIP(ipAddress)
	if ip == nil {
		return nil
	}
	isIPv6 := false
	for i := 0; i < len(ipAddress); i++ {
		switch ipAddress[i] {
		case '.':
			break
		case ':':
			isIPv6 = true
			break
		}
	}
	ipInt := big.NewInt(0)
	if isIPv6 {
		return ipInt.SetBytes(ip.To16())
	}
	return ipInt.SetBytes(ip.To4())
}

整型转IPv4/IPv6

// Long2Ip 整型转ip
func Long2Ip(ipLong *big.Int) string {
	ipByte := ipLong.Bytes()
	ip := net.IP(ipByte)
	return ip.String()
}

文中代码已上传github

อ่านต่อ

เนื้อหาเหล่านี้อาจเป็นประโยชน์ต่อไป

คำแนะนำที่เกี่ยวข้อง ประวัติการอ่าน และบทความที่บันทึกไว้

แนะนำ

ดูล่าสุด

ยังไม่มีประวัติการอ่าน

รายการที่บันทึก

บทความที่บันทึกจะแสดงที่นี่