`
DarkWingBoy
  • 浏览: 50665 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

golang版ip2long long2ip

 
阅读更多

http://www.dotcoo.com/golang-ip2long-long2ip

 

 

其实也没什么难度的.写完放到这里分享下.

AddrToUint32

func AddrToUint32(addr net.Addr) (uint32, error) {
    var ip net.IP

    switch ipaddr := addr.(type) {
    case *net.IPAddr:
        ip = ipaddr.IP
    case *net.IPNet:
        ip = ipaddr.IP
    case *net.TCPAddr:
        ip = ipaddr.IP
    case *net.UDPAddr:
        ip = ipaddr.IP
    case *net.UnixAddr:
        return 0, errors.New("UnixAddr type not support")
    default:
        return 0, errors.New("addr type not support")
    }

    return binary.BigEndian.Uint32(ip.To4()), nil
}

ip2long

func Ip2long(ipstr string) (ip uint32) {
    r := `^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})`
    reg, err := regexp.Compile(r)
    if err != nil {
        return
    }
    ips := reg.FindStringSubmatch(ipstr)
    if ips == nil {
        return
    } 
      
    ip1, _ := strconv.Atoi(ips[1])
    ip2, _ := strconv.Atoi(ips[2])
    ip3, _ := strconv.Atoi(ips[3])
    ip4, _ := strconv.Atoi(ips[4])
      
    if ip1>255 || ip2>255 || ip3>255 || ip4 > 255 {
        return
    }
      
    ip += uint32(ip1 * 0x1000000)
    ip += uint32(ip2 * 0x10000)
    ip += uint32(ip3 * 0x100)
    ip += uint32(ip4)
      
    return
}

long2ip

func Long2ip(ip uint32) string {
    return fmt.Sprintf("%d.%d.%d.%d", ip>>24, ip<<8>>24, ip<<16>>24, ip<<24>>24)
}
分享到:
评论

相关推荐

    Java_IPv4转换_ip2long_long2IP

    Java_IPv4转换_ip2long_long2IP,与php/java/javascript互相兼容

    ip2long和long2ip的学习程序

    `ip2long`和`long2ip`函数就是用于实现这种转换的工具。这两个函数通常在PHP中使用,但其他编程语言中也有类似功能的函数。 `ip2long`函数的主要作用是将IPv4地址(例如"192.168.1.1")转换为32位无符号整型数值。...

    go语言版的ip2long函数实例

    本文实例讲述了go语言版的ip2long函数。分享给大家供大家参考。具体分析如下: 这里介绍的go语言版的ip2long 函数不会对 IP 的合法性进行校验。 代码如下:// 注意: 该函数不会对 IP 的合法性进行校验 func Ip2Long...

    详谈php ip2long 出现负数的原因及解决方法

    `ip2long` 和 `long2ip` 这两个函数提供了解决这个问题的便捷方式。本文将详细讨论`ip2long` 函数出现负数的原因以及相应的解决方法。 `ip2long` 是一个PHP内置函数,其功能是将一个符合标准格式的IPv4地址转换为32...

    IP地址转化为长整型long

    在提供的"IP2Long.txt"文件中,可能包含了更多关于此话题的源码或解释。阅读该文件可以进一步了解IP地址转长整型的细节和应用。在实际编程中,我们应确保正确处理各种边界情况,如无效的IP地址、异常处理等,以确保...

    ip转换为long

    IP转换,输入ip返回long型数据,输入long型数据,返回IP

    php IP转换整形(ip2long)的详解

    `ip2long()`函数在处理这种点分十进制格式的IP地址时,会将其转换为单一的32位数字,便于存储和计算。 首先,让我们深入理解`ip2long()`的工作原理。对于一个IP地址,例如"10.2.1.3",它实际上可以被视为一个32位二...

    ip转成Long

    用java写的ip转成Long数据类型的UDF函数,在hive中查询IP对应的省、市必须用到的函数

    ip地址转long,long转ip

    该类可以将long型数据转换为Ip格式字符串,将ip格式字符串转换为long

    探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法

    另一种方法是先使用`ip2long()`将IP地址转换为有符号的32位整数,然后将这个整数转换为二进制,再将二进制字符串转换回十进制。这可以避免整数溢出的问题: ```php $strIp = '182.118.0.0'; echo bindec(decbin...

    linux点分十进制IP转换为long型

    linux点分十进制IP转换为long型 网络字节序与主机字节序互转

    【PHP】根据IP地址查询省市(纯真数据库最新版)

    $ipLong = ip2long($ip); if ($ipLong === false) { return '无效的IP地址'; } $result = null; foreach ($ipData as $range) { if ($ipLong &gt;= $range['start'] && $ipLong $range['end']) { $result = $...

    php版纯真ip数据库

    if (ip2long($ip) &gt;= ip2long($start_ip) && ip2long($ip) &lt;= ip2long($end_ip)) { return $location; } } return '未知'; } // 使用示例 $ip = '192.168.0.1'; echo ip_location($ip); // 输出对应位置信息 `...

    GolangHTTP的longpolling库Golongpoll.zip

    Golongpoll 是 golang HTTP 的 longpolling 库,可以使构建 web pub-sub 更加容易。基本用法:import "github.com/jcuga/golongpoll" // This launches a goroutine and creates channels for all the ...

Global site tag (gtag.js) - Google Analytics