4

Python で自分の MAC アドレスを \x##\x##\x##\x##\x##\x## の形式で取得するにはどうすればよいですか?
イーサネット ヘッダーを作成し、ソース ハードウェア アドレスを自動的に生成しようとしています。

uuid.getnode()MACアドレスを48ビット整数として取得するために使用しています。すでにその形式の文字列に追加できるように変換するにはどうすればよいですか?
すなわち:eth_header = "\xff\xff\xff\xff\xff\xff" + magicconvert(uuid.getnode())

4

3 に答える 3

3

ユーザーnneonneoが 9 月 13 日にこれに回答しました。クレジットは彼に行きます:

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

これを編集して、希望どおりにフォーマットされた文字列を提供します。

また、「uuid.getnode()」がランダムな値を返すか、システム上のランダムなネットワーク インターフェイスの MAC アドレスを取得している可能性が非常に高いことをお伝えしたいと思います。私が言えることから、本当に知る方法はありません。

于 2012-12-13T17:23:22.577 に答える
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
于 2012-12-13T18:14:27.987 に答える
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)))
于 2012-12-13T17:26:36.710 に答える