我有 6 字节字符串的 MAC 地址。您将如何以“人类”可读格式打印它?
谢谢
import struct
"%x:%x:%x:%x:%x:%x" % struct.unpack("BBBBBB",your_variable_with_mac)
没必要用
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'
尝试一下,
for b in addr:
print("%02x:" % (b))
其中addr是你的字节数组。
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) 快得多
对于 CircuitPython 我使用了以下内容:
mac_address = ":".join(f"{byte:02x}" for byte in wifi.radio.mac_address)
print("My MAC addr:", mac_address)
通常的十六进制格式是否不够人类可读? (参见这里了解将字节转换为十六进制的方法)
de:ad:be:ef:ca:fe
顺便说一句,这是大多数软件中显示 MAC 地址的方式(只是 Windows 使用破折号而不是冒号)。