我想在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我只是想知道我写的是否正确
答案 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)