实例: 给出一个IP地址和一个地址段,确认该IP地址是否属于这个地址段。
分析:IP地址 = 网络号 + 主机号
鉴定IP地址是否属于该地址段,只需鉴定两者的网络号是否相等。
例子: IP 192.168.56.2 IP地址段: 192.168.56.0/26
IP地址 | 二进制表示 |
---|---|
192.168.56.2 | 11000000 10101000 00111000 00000010 |
192.168.56.0/26 | 11000000 10101000 00111000 00000000 |
已知子网掩码为26位
将IP地址右移6(32-26)位,再进行异或运算
11000000 10101000 00111000 00 ⊕ 11000000 10101000 00111000 00
如果结果为0, 则表示网络号一致,则该IP属于该网段。
如果结果为1, 则表示网络号不一致, 则表示该IP不属于该网段。
//将IP地址转化为二进制String
func ip2binary(ip string) string {
str := strings.Split(ip, ".")
var ipstr string
for _, s := range str {
i, err := strconv.