【100】判断两个IP是否属于同一子网?

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 18:45   11   0


题目部分   判断两个IP是否属于同一子网?     




答案部分#将/24的掩码转换位255.255.255.0这样点分十进制格式
def maskChange(self,mask):
    '''netmask change, example: 24 change 255.255.255.0
    Argv:
        mask: 0 <= 32
    Return:
        netmask is ip, example 255.255.255.0
    '''
    mask = int(mask)
    binary32 = []
    for i in range(32):
        binary32.append('0')

    for i in range(mask):
        binary32[i] = '1'

    binary_ip = []
    for i in range(4):
        binary_ = ''.join(binary32[i * 8:i * 8 + 8])
        decimal = str(int(binary_, 2))
        binary_ip.append(decimal)
    netmask = '.'.join(binary_ip)
    return netmask

##和ipToBinary差不多
def ipToNum(self,ip):
    '''ip address change binary
    Argv:
        ip: ip address,example:1.1.1.1
    Return:
        neumber
    '''
    ip_num = ip.split('.')
    ip = []
    for x in ip_num:
        ip.append(int(x))
    ip_num = ip[0]<<24 | ip[1]<<16 | ip[2]<<8 | ip[3]
    return ip_num

##和maskChange结合在一起,就与maskToBinary差不多,
def maskToNum(self,mask):
    '''netmask change binary
    Argv:
        ip: netmask,example: 24 or 255.255.255.0
    Return:
        neumber
    '''
    mask_list = str(mask).split('.')
    if len(mask_list) == 1:
        mask = self.maskChange(int(mask))
    mask_num = self.ipToNum(mask)
    return mask_num

  


About Me:小婷儿

● 本文作者:小婷儿,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用

● 作者博客地址:https://blog.csdn.net/u010986753

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● 微信:tinghai87605025 联系我加微信群

● QQ:87605025

● QQ交流群py_data :483766429

● 公众号:python宝 或 DB宝

● 提供OCP、OCM和高可用最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

如果你觉得到文章对您有帮助,点击下方我的头像,赞赏我哦!

有您的支持,小婷儿一定会越来越好!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP