在python中获取MAC地址并附加到字符串

时间:2012-12-13 16:52:38

标签: python python-2.7

如何在python中以下列形式获取我的mac地址:\ x ## \ x ## \ x ## \ x ## \ x ## \ x ##?
我正在尝试构建一个以太网头并自动生成源硬件地址。

我正在使用uuid.getnode()将mac地址作为48位整数。如何将其转换为可以将其附加到已经采用该格式的字符串中? 即:eth_header = "\xff\xff\xff\xff\xff\xff" + magicconvert(uuid.getnode())

3 个答案:

答案 0 :(得分:3)

用户nneonneo于9月13日回答了这个问题。归功于他:

    '-'.join('%02X' % ((uuid.getnode() >> 8*i) & 0xff) for i in reversed(xrange(6)))

对此进行编辑,以格式化字符串为您提供。

我还想花点时间说“uuid.getnode()”很可能会返回一个随机值,或者它可能正在获取系统上任何随机网络接口的MAC地址。据我所知,真的没有办法知道。

答案 1 :(得分:2)

我确信有很多方法,这个怎么样:

import uuid
hdr="\xff"*6
mac=uuid.getnode()
txt="%012X"%mac
as_b=[int("".join(x),16) for x in map(None,*(txt[::2],txt[1::2]))]
as_s="".join(chr(b) for b in as_b)
out=hdr+as_s

答案 2 :(得分:0)

from itertools import izip
import uuid

token = "\\x"
mac_address = "%012x" % uuid.getnode()
iter_mac_address = iter(mac_address)
"%s%s" % (token, token.join(a+b for a, b in izip(iter_mac_address, iter_mac_address)))