IP地址转换:数字和字符串之间的转换

发布者:上海IT外包来源:http://www.lanmon.net点击数:1839

IP地址库中有两种类型的IP地址存储格式。一个是点分十进制表示法(192.168.1.1),另一个是数字(3232235777)。在应用程序中,通常需要在这两种格式之间进行。转换。
IP地址转换:数字和字符串之间的转换
对于这个问题,我实现了一个快捷方法,用于转换exnet扩展包中的两个:
Func IP2Long(ip net.IP)(uint,error)IP2Long将net.IP转换为数字
Func Long2IP(iint)(net.IP,error)Long2IP将值转换为net.IP
Func IPString2Long(ip string)(uint,error)IPString2Long将ip字符串转换为数字值
Func Long2IPString(i uint)(string,error)Long2IPString将值转换为ip字符串
使用示例:
包主
进口(
'FMT'
'净'
'反映'
'github.com/thinkeridea/go-extend/exnet'

Func main(){
Ip:='192.168.1.1'
n,_:=exnet.IPString2Long(ip)
s,_:=exnet.Long2IPString(n)
fmt.Println(n,s==ip)
Ip1:=net.ParseIP(ip)//将得到一个16字节的字节,主要是为了与ipv6兼容
n,_=exnet.IP2Long(Ip1)
Ip2,_:=exnet.Long2IP(n)fmt.Println(n,reflect.DeepEqual(Ip1 [12:],Ip2))
}
那么如何将点分十进制IP地址转换为数字?
IPv4地址有4个字节,样式如下:
MSB———— -LSB
B4 b3 b2 b1
每个字节表示的范围:
字节4: 4294967296(1
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部