是否有库函数来检查 MAC 地址是否为多播?
Is there a library function to check if a MAC address is multicast?
我知道我可以使用 netaddr
模块来检查 IP 地址是否是多播的:
netaddr.IPAddress("192.168.1.1").is_multicast()
在我继续自己写之前,是否有针对MAC地址的各种格式的可比函数?
例如:
0123.4567.89ab
多播地址在最高有效字节的最低有效位中有 1
。在十六进制表示中,这意味着第二个半字节是奇数(因为 MAC 地址是小端)。除了ffff.ffff.ffff
是广播地址。
http://bradhedlund.com/2007/11/21/identifying-ethernet-multicast/
为了完整性:"function"检查这个就像
一样简单
>>> mac = netaddr.EUI('0123.4567.89ab')
>>> mac_is_multicast = bool(mac.words[0] & 0b01) # Is LSB set?
同样,您可以检查 MAC 地址是否由
在本地管理
>>> mac = netaddr.EUI('0123.4567.89ab')
>>> mac_is_locally_administered = bool(mac.words[0] & 0b10) # Is 2nd LSB set?
我知道我可以使用 netaddr
模块来检查 IP 地址是否是多播的:
netaddr.IPAddress("192.168.1.1").is_multicast()
在我继续自己写之前,是否有针对MAC地址的各种格式的可比函数?
例如:
0123.4567.89ab
多播地址在最高有效字节的最低有效位中有 1
。在十六进制表示中,这意味着第二个半字节是奇数(因为 MAC 地址是小端)。除了ffff.ffff.ffff
是广播地址。
http://bradhedlund.com/2007/11/21/identifying-ethernet-multicast/
为了完整性:"function"检查这个就像
一样简单>>> mac = netaddr.EUI('0123.4567.89ab')
>>> mac_is_multicast = bool(mac.words[0] & 0b01) # Is LSB set?
同样,您可以检查 MAC 地址是否由
在本地管理>>> mac = netaddr.EUI('0123.4567.89ab')
>>> mac_is_locally_administered = bool(mac.words[0] & 0b10) # Is 2nd LSB set?