如何以以下形式在python中获取我的mac地址:\x##\x##\x##\x##\x##\x##?
我正在尝试构建一个以太网标头并自动生成源硬件地址。
我正在使用uuid.getnode()
将 mac 地址作为 48 位整数获取。如何转换它以便可以将其附加到已经采用该格式的字符串?
IE:eth_header = "\xff\xff\xff\xff\xff\xff" + magicconvert(uuid.getnode())
如何以以下形式在python中获取我的mac地址:\x##\x##\x##\x##\x##\x##?
我正在尝试构建一个以太网标头并自动生成源硬件地址。
我正在使用uuid.getnode()
将 mac 地址作为 48 位整数获取。如何转换它以便可以将其附加到已经采用该格式的字符串?
IE:eth_header = "\xff\xff\xff\xff\xff\xff" + magicconvert(uuid.getnode())
用户nneonneo在 9 月 13 日回答了这个问题。归功于他:
'-'.join('%02X' % ((uuid.getnode() >> 8*i) & 0xff) for i in reversed(xrange(6)))
编辑它以提供您想要的格式的字符串。
我还想借此机会说明“uuid.getnode()”很可能会返回一个随机值,或者它可能会获取系统上任何随机网络接口的 MAC 地址。据我所知,真的没有办法知道。
我敢肯定有很多方法,这个怎么样:
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
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)))