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,与php/java/javascript互相兼容
`ip2long`和`long2ip`函数就是用于实现这种转换的工具。这两个函数通常在PHP中使用,但其他编程语言中也有类似功能的函数。 `ip2long`函数的主要作用是将IPv4地址(例如"192.168.1.1")转换为32位无符号整型数值。...
本文实例讲述了go语言版的ip2long函数。分享给大家供大家参考。具体分析如下: 这里介绍的go语言版的ip2long 函数不会对 IP 的合法性进行校验。 代码如下:// 注意: 该函数不会对 IP 的合法性进行校验 func Ip2Long...
`ip2long` 和 `long2ip` 这两个函数提供了解决这个问题的便捷方式。本文将详细讨论`ip2long` 函数出现负数的原因以及相应的解决方法。 `ip2long` 是一个PHP内置函数,其功能是将一个符合标准格式的IPv4地址转换为32...
IP转换,输入ip返回long型数据,输入long型数据,返回IP
`ip2long()`函数在处理这种点分十进制格式的IP地址时,会将其转换为单一的32位数字,便于存储和计算。 首先,让我们深入理解`ip2long()`的工作原理。对于一个IP地址,例如"10.2.1.3",它实际上可以被视为一个32位二...
在提供的"IP2Long.txt"文件中,可能包含了更多关于此话题的源码或解释。阅读该文件可以进一步了解IP地址转长整型的细节和应用。在实际编程中,我们应确保正确处理各种边界情况,如无效的IP地址、异常处理等,以确保...
用java写的ip转成Long数据类型的UDF函数,在hive中查询IP对应的省、市必须用到的函数
该类可以将long型数据转换为Ip格式字符串,将ip格式字符串转换为long
另一种方法是先使用`ip2long()`将IP地址转换为有符号的32位整数,然后将这个整数转换为二进制,再将二进制字符串转换回十进制。这可以避免整数溢出的问题: ```php $strIp = '182.118.0.0'; echo bindec(decbin...
linux点分十进制IP转换为long型 网络字节序与主机字节序互转
$ipLong = ip2long($ip); if ($ipLong === false) { return '无效的IP地址'; } $result = null; foreach ($ipData as $range) { if ($ipLong >= $range['start'] && $ipLong $range['end']) { $result = $...
if (ip2long($ip) >= ip2long($start_ip) && ip2long($ip) <= ip2long($end_ip)) { return $location; } } return '未知'; } // 使用示例 $ip = '192.168.0.1'; echo ip_location($ip); // 输出对应位置信息 `...
Golongpoll 是 golang HTTP 的 longpolling 库,可以使构建 web pub-sub 更加容易。基本用法:import "github.com/jcuga/golongpoll" // This launches a goroutine and creates channels for all the ...