如何在python中将mac地址转换为十进制

时间:2016-04-26 07:01:24

标签: python python-2.7 python-2.x

我想在python中编写一个以mac地址为参数并将该mac地址转换为十进制形式的函数。请提供python2支持的解决方案

我写了一段代码

def mac_to_int(macaddress): 
   i=0  
   mac=list(macaddress)
   mac_int=0;   
 for i in range(len(macaddress)):
   mac_int=mac_int<<8
   mac_int+=mac[i]

return mac_int

实际上在第3行,我想将macaddress的内容复制到mac我只是想知道我写的是否正确

2 个答案:

答案 0 :(得分:14)

就像这一行一样简单:

mac_int = int(mac_str.translate(None, ":.- "), 16)

首先删除可能的字节分隔符字符(&#34; :&#34;,&#34; .&#34;,&#34; -& #34;或&#34; &#34;但如果需要,可以添加更多内容,然后将字符串解析为带有基数16(十六进制)的整数。

正如所要求的那样,反过来可以使用例如str.format将整数转换为十六进制字符串,然后只需将冒号插入其中:

mac_hex = "{:012x}".format(mac_int)
mac_str = ":".join(mac_hex[i:i+2] for i in range(0, len(mac_hex), 2))

答案 1 :(得分:0)

以下功能可以解决问题

import re

def mac_to_int(mac):
    res = re.match('^((?:(?:[0-9a-f]{2}):){5}[0-9a-f]{2})$', mac.lower())
    if res is None:
        raise ValueError('invalid mac address')
    return int(res.group(0).replace(':', ''), 16)