思路是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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

