思路是10/16 進制的轉(zhuǎn)換 和 字符串的處理
開始造輪子
?
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轉(zhuǎn)int
替換掉冒號轉(zhuǎn)16進制
1 def macToInt(mac): 2 mac = mac.replace( " : " , "" ) 3 return int(mac, 16)
?
3、int轉(zhuǎn)mac?
轉(zhuǎn)回16進制后進行補位和補冒號
1 def intToMac(intMac): 2 # mac地址每段都是2位 不足位數(shù)補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
轉(zhuǎn)成int后進行數(shù)值計算
1 def getNextMac(macAddr, n): 2 return intToMac(macToInt(macAddr) + n)
?
5、獲取上n個mac
轉(zhuǎn)成int后進行數(shù)值計算
1 def backOldMac(macAddr, n): 2 return intToMac(macToInt(macAddr) - n)
?
6、mac地址比較
轉(zhuǎn)換為int后進行值比較
1 def compareMac(macA, macB): 2 return macToInt(macA) >= macToInt(macB)
?
7、mac地址個數(shù)計算
轉(zhuǎn)換成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、反轉(zhuǎn)mac地址
mac地址的反序化,去掉冒號后反轉(zhuǎn)字符串然后加回冒號
1 def macReverse(mac): 2 info = mac.split( " : " ) 3 info.reverse() 4 return " : " .join(info)
?
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
