數據類型轉換(計算mac地址)


[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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM