您的位置:首页 > 编程语言 > Python开发

python mac地址计算

2020-04-18 07:18 731 查看

【推荐阅读】微服务还能火多久?>>>

思路是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)

 

原文出处:https://www.cnblogs.com/cutesnow/p/11316326.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  def