zoukankan      html  css  js  c++  java
  • python mac地址计算

    思路是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)
  • 相关阅读:
    C语言II博客作业01
    学期总结
    C语言|博客作业01
    C语言|博客作业02
    C语言|博客作业08
    C语言|博客作业07
    C语言|博客作业06
    C语言|博客作业05
    C语言|博客作业04
    c语言||博客作业04
  • 原文地址:https://www.cnblogs.com/cutesnow/p/11316326.html
Copyright © 2011-2022 走看看