• 中文
  • 注册
    • 查看作者
    • 用python实现子网掩码地址与位长的相互转换

       某日,使用centos8,发现网络配置时,子网掩码需要手动转换;因为centos8的网络配置方式为:

      nmcli connection enp4s0 modify ipv4.methord manual ipv4.address "192.168.1.120/24" ipv4.gateway "192.168.1.1" ipv4.dns "223.5.5.5"

      其中没有子网掩码的配置项。于是,写一函数,实现子网掩码和位长的相互转换。

      一:子网掩码转化为位长:

      # coding:utf-8
       def exchange_mask(mask):
          # 计算二进制字符串中 '1' 的个数
          count_bit = lambda bin_str: len([i for i in bin_str if i=='1'])
       
          # 分割字符串格式的子网掩码为四段列表
          mask_splited = mask.split('.')
       
          # 转换各段子网掩码为二进制, 计算十进制
          mask_count = [count_bit(bin(int(i))) for i in mask_splited]
       
          return sum(mask_count)
       if __name__ == '__main__':
          print exchange_mask('255.255.0.0')

      二:位长转化为子网掩码:

      #codint = utf8def exchange_maskint(mask_int):
        bin_arr = ['0' for i in range(32)]
        for i in range(mask_int):
          bin_arr[i] = '1'
        tmpmask = [''.join(bin_arr[i * 8:i * 8 + 8]) for i in range(4)]
        tmpmask = [str(int(tmpstr, 2)) for tmpstr in tmpmask]
        return '.'.join(tmpmask)
        if __name__ == '__main__':
        print exchange_maskint(24)

    • 0
    • 0
    • 0
    • 80
    • 请登录之后再进行评论

      登录
    • 做任务
    • 发表内容
    • 实时动态

    • 关于伊迪派 | 联系我们 | 免责声明 | 侵权投诉 | 小黑屋

      本站资源来源于互联网,仅供个人学习参考研究之用,请于下载后24小时内删除。
      如有侵犯您的权益,可通过邮件(admin@idepy.com)、站内通道等方式反馈,本网站将在第一时间处理。
      Copyright © 2019 - 2020 伊迪派(IDEPY), All Rights Reserved · 粤ICP备12030819号-6 · 粤公网安备 44132202100185号