[root@localhost test1]# vim 19.py //add #!/usr/bin/python macaddr = '00:0C:29:D1:6F:E9' prefix_mac = macaddr[:-3] last_two = macaddr[-2:] plus_one = int(last_two, 16) + 1 new_last_two = hex(plus_one)[2:] new_mac = prefix_mac + ':' + new_last_two print new_mac.upper() /* prefix_mac -- 定義mac地址的前綴,要保持前五位不變 [:-3] --從開頭取到倒數第三位(冒號也算一位) last_two -- 先取最后的兩位 ,[-2:] 從倒數第二位一直取到最后 因為mac地址為16進制,要將其轉換為10進制 --plus_one 然后要加1 --得到新的 然后再把這個新的 16進制 轉換為 10進制 -- 有時會打印0x(則表示16進制) -- new_last_two -- [2:]從第三個取到最后 new_mac --新的地址 ,就是把前綴加上最后計算的兩位,利用冒號來連接 upper() -- 此函數可把 小寫字母 變成 大寫字母 */ [root@localhost test1]# python 19.py 00:0C:29:D1:6F:EA
/* 上面的只是針對某個mac地址寫的腳本 當有什么不一樣的地方,可以先通過進入python狀態進行測試, 找到了好的解決方法,再寫入腳本中進行顯示 */
/* 如果 最尾兩位為01 ,當轉換后 0不會顯示, 會顯示 1. 解決方法: */ [root@localhost test1]# vim 19.py //add #!/usr/bin/python macaddr = '00:0C:29:D1:6F:01' prefix_mac = macaddr[:-3] last_two = macaddr[-2:] plus_one = int(last_two, 16) + 1 if plus_one in range(10): new_last_two = hex(plus_one)[2:] new_last_two = '0' + new_last_two else: new_last_two = hex(plus_one)[2:] new_mac = prefix_mac + ':' + new_last_two print new_mac.upper()
/* 如果最后兩位為 0A,則下一個應該為B0,但是0又沒辦法取到 解決方法: */ [root@localhost test1]# vim 19.py //add #!/usr/bin/python macaddr = '00:0C:29:D1:6F:0A' prefix_mac = macaddr[:-3] last_two = macaddr[-2:] plus_one = int(last_two, 16) + 1 if plus_one in range(10): new_last_two = hex(plus_one)[2:] new_last_two = '0' + new_last_two else: new_last_two = hex(plus_one)[2:] if len(new_last_two) == 1: new_last_two = '0' + new_last_two new_mac = prefix_mac + ':' + new_last_two print new_mac.upper()