python mac地址计算

系统 1753 0

思路是10/16 进制的转换 字符串的处理

开始造轮子

 

1、判断是否是mac地址

正则匹配是否符合条件

            
              1
            
            
              import
            
            
               re

            
            
              2
            
            
              3
            
            
              def
            
            
               isMac(string):

            
            
              4
            
                 preg = re.compile(
            
              '
            
            
              ^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$
            
            
              '
            
            
              )

            
            
              5
            
                 ret =
            
               preg.match(string)

            
            
              6
            
            
              if
            
             ret 
            
              is
            
            
               None:

            
            
              7
            
            
              return
            
            
               False

            
            
              8
            
            
              else
            
            
              :

            
            
              9
            
            
              return
            
             True
          

 

2、mac转int

替换掉冒号转16进制

            
              1
            
            
              def
            
            
               macToInt(mac):

            
            
              2
            
                 mac = mac.replace(
            
              "
            
            
              :
            
            
              "
            
            , 
            
              ""
            
            
              )

            
            
              3
            
            
              return
            
             int(mac, 16)
          

 

3、int转mac 

转回16进制后进行补位和补冒号

            
               1
            
            
              def
            
            
               intToMac(intMac):

            
            
               2
            
            
              #
            
            
               mac地址每段都是2位 不足位数补0 例如:f:23:54 => 0f:23:54
            
            
               3
            
            
              if
            
             len(hex(intMac)) % 2 !=
            
               0:

            
            
               4
            
                     hexStr = 
            
              '
            
            
              0{0:X}
            
            
              '
            
            
              .format(intMac)

            
            
               5
            
            
              else
            
            
              :

            
            
               6
            
                     hexStr = 
            
              '
            
            
              {0:X}
            
            
              '
            
            
              .format(intMac)

            
            
               7
            
            
               8
            
                 i =
            
               0

            
            
               9
            
                 ret = 
            
              ""
            
            
              10
            
            
              11
            
            
              while
            
             i <= len(hexStr) - 2
            
              :

            
            
              12
            
            
              if
            
             ret == 
            
              ""
            
            
              :

            
            
              13
            
                         ret = hexStr[i:(i + 2
            
              )]

            
            
              14
            
            
              else
            
            
              :

            
            
              15
            
                         ret = 
            
              ""
            
            .join([ret, 
            
              "
            
            
              :
            
            
              "
            
            , hexStr[i:(i + 2
            
              )]])

            
            
              16
            
                     i = i + 2

            
              17
            
            
              return
            
             ret
          

 

4、获取下n个mac

转成int后进行数值计算

            
              1
            
            
              def
            
            
               getNextMac(macAddr, n):

            
            
              2
            
            
              return
            
             intToMac(macToInt(macAddr) + n)
          

 

5、获取上n个mac

转成int后进行数值计算

            
              1
            
            
              def
            
            
               backOldMac(macAddr, n):

            
            
              2
            
            
              return
            
             intToMac(macToInt(macAddr) - n)
          

 

6、mac地址比较

转换为int后进行值比较

            
              1
            
            
              def
            
            
               compareMac(macA, macB):

            
            
              2
            
            
              return
            
             macToInt(macA) >= macToInt(macB)
          

 

7、mac地址个数计算

转换成int后进行减法运算

            
              1
            
            
              def
            
            
               calcMacNum(mac_start, mac_end):

            
            
              2
            
                 mac_start =
            
               mac_start
            
            .upper()
            
3    mac_end = mac_end .upper()
4    ret = macToInt(mac_end) - macToInt(mac_start) + 1
5 if ret < 0:
6 ret = 0
7 return ret

 

8、反转mac地址

mac地址的反序化,去掉冒号后反转字符串然后加回冒号

            
              1
            
            
              def
            
            
               macReverse(mac):

            
            
              2
            
                 info = mac.split(
            
              "
            
            
              :
            
            
              "
            
            
              )

            
            
              3
            
            
                  info.reverse()

            
            
              4
            
            
              return
            
            
              "
            
            
              :
            
            
              "
            
            .join(info)
          

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论