如何在python中以下列形式获取我的mac地址:\ x ## \ x ## \ x ## \ x ## \ x ## \ x ##?
我正在尝试构建一个以太网头并自动生成源硬件地址。
我正在使用uuid.getnode()
将mac地址作为48位整数。如何将其转换为可以将其附加到已经采用该格式的字符串中?
即:eth_header = "\xff\xff\xff\xff\xff\xff" + magicconvert(uuid.getnode())
答案 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)))