golang ip2long long2ip

这段代码展示了如何在Go中将IPv4地址转换为32位无符号整数(ip2long)以及将整数转换回IPv4地址(long2ip)。iptest函数遍历一个IP地址到整数的映射,验证转换的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


func iptest() {
     var m = map[ string] uint32{
         "217.171.224.66": 3651919938,
         "80.101.64.8": 1348812808,
         "188.204.155.170": 3167525802,
         "74.86.158.107": 1247190635,
         "83.83.140.49": 1397984305,
         "195.73.215.250": 3276396538,
         "37.74.94.85": 625630805,
         "62.195.45.68": 1052978500,
         "82.169.113.78": 1386836302,
         "145.53.147.68": 2436207428,
    }
     for k, v := range m {
         ip := net. ParseIP(k)
         if ip == nil {
            fmt. Println( "parseip fail:", k, v)
             continue
        }
         if r := ip2long(ip); r != v {
            fmt. Println( "ip2long fail:", r, v)
        }
         if r := long2ip(v). String(); r != k {
            fmt. Println( "long2ip fail:", r, v)
        }
    }
}

func ip2long(ip net.IP) uint32 {
     a := uint32(ip[ 12])
     b := uint32(ip[ 13])
     c := uint32(ip[ 14])
     d := uint32(ip[ 15])
     return uint32(a<< 24 | b<< 16 | c<< 8 | d)
}

func long2ip(ip uint32) net.IP {
     a := byte((ip >> 24) & 0xFF)
     b := byte((ip >> 16) & 0xFF)
     c := byte((ip >> 8) & 0xFF)
     d := byte(ip & 0xFF)
     return net. IPv4(a, b, c, d)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值