zoukankan      html  css  js  c++  java
  • py处理网段转化模块

    def countBit(countNum,bit):
        giveNum="0"*(bit-len(bin(countNum)[2:]))+bin(countNum)[2:]
        return  giveNum
    
    #将ip转十进制
    def minIp(ip):
        value = countBit(int(ip.split('.')[0]),8) + countBit(int(ip.split('.')[1]),8)+ countBit(int(ip.split('.')[2]),8)+ countBit(int(ip.split('.')[3]),8)
        return int(value,2)
    
    def net(n):
        ip1 =  n.split('/')[0]
        mask1 = int(n.split('/')[1])
        if mask1 == 32:
            minip = ip1
            maxip = ip1
    
        elif mask1 > 24:
            k = int(ip1.split('.')[-1])
            dels = 8-(mask1 - 24)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.'+str1
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.'+str2
    
    
        elif mask1 == 24:
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.0'
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.'+'255'
        elif mask1 > 16 and mask1 < 24:
            k = int(ip1.split('.')[2])
            dels = 8-(mask1 - 16)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+str1+'.'+'0'
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+str2+'.'+'255'
        elif mask1 == 16:
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+'0'+'.0'
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+'255'+'.'+'255'
    
        elif mask1 > 8 and mask1 < 16:
            k = int(ip1.split('.')[1])
            dels = 8-(mask1 - 8)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = ip1.split('.')[0]+'.'+str1+'.'+'0'+'.'+'0'
            maxip = ip1.split('.')[0]+'.'+str2+'.'+'255'+'.'+'255'
        elif mask1 == 8:
            minip = ip1.split('.')[0]+'.'+'0'+'.'+'0'+'.0'
            maxip = ip1.split('.')[0]+'.'+'255'+'.'+'255'+'.'+'255'
        elif mask1 > 0 and mask1 < 8:
            k = int(ip1.split('.')[0])
            dels = 8-(mask1 - 0)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = str1+'.'+'0'+'.'+'0'+'.'+'0'
            maxip = str2+'.'+'255'+'.'+'255'+'.'+'255'
    
        elif mask1 == 0:
            minip = '0.0.0.0'
            maxip = '255.255.255.255'
        else:
            print 'bad mask!'
    
        return [minIp(minip),minIp(maxip)]  #转化整型

     调用方式 net(10.2.2.0/24)

    可以封装成一个类,没时间,so~~

  • 相关阅读:
    LeetCode Notes_#328_奇偶链表
    LeetCode Notes_#203_移除链表元素
    LeetCode Notes_#19_删除链表的倒数第N个节点
    如何选择分类模型的评价指标
    利用类权重来改善类别不平衡
    使用LIME解释黑盒ML模型
    Python机器学习算法:线性回归
    基于RNN自编码器的离群点检测
    用TensorFlow预测纽约市AirBnB租赁价格
    权重不确定的概率线性回归
  • 原文地址:https://www.cnblogs.com/fengzaoye/p/6826061.html
Copyright © 2011-2022 走看看