Python。从 6 字节字符串中打印 mac 地址

问题描述 投票:0回答:7

我有 6 字节字符串的 MAC 地址。您将如何以“人类”可读格式打印它?

谢谢

python printing tcp
7个回答
13
投票
import struct
"%x:%x:%x:%x:%x:%x" % struct.unpack("BBBBBB",your_variable_with_mac)

12
投票

没必要用

struct
:

def prettify(mac_string):
    return ':'.join('%02x' % ord(b) for b in mac_string)

尽管如果

mac_string
bytearray
(或 Python 3 中的
bytes
),考虑到数据的性质,这是比字符串更自然的选择,那么您也不需要
ord
函数。

使用示例:

>>> prettify(b'5e\x21\x00r3')
'35:65:21:00:72:33'

9
投票

Python 3.8 及更高版本中,您可以只使用

bytes.hex

b'\x85n:\xfaGk'.hex(":") // -> '85:6e:3a:fa:47:6b'

3
投票

尝试一下,

for b in addr:
    print("%02x:" % (b))

其中addr是你的字节数组。


0
投票

s=b'\x04NZ\xdf\x7f\xab'

1) 导入结构体 ssid_2 = "%02x:%02x:%02x:%02x:%02x:%02x" % struct.unpack("BBBBBB", s)

2) ':'.join(f'{x:02x}' for x in s)

但是 1) 比 2) 快得多


0
投票

对于 CircuitPython 我使用了以下内容:

mac_address = ":".join(f"{byte:02x}" for byte in  wifi.radio.mac_address)
print("My MAC addr:", mac_address)

-3
投票

通常的十六进制格式是否不够人类可读? (参见这里了解将字节转换为十六进制的方法)

de:ad:be:ef:ca:fe

顺便说一句,这是大多数软件中显示 MAC 地址的方式(只是 Windows 使用破折号而不是冒号)。

© www.soinside.com 2019 - 2024. All rights reserved.