我有6字节字符串的mac地址。你会如何以“人类”可读格式打印它?
由于
答案 0 :(得分:9)
import struct
"%x:%x:%x:%x:%x:%x" % struct.unpack("BBBBBB",your_variable_with_mac)
答案 1 :(得分:8)
无需使用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'
答案 2 :(得分:3)
尝试,
for b in addr:
print("%02x:" % (b))
其中addr是你的字节数组。
答案 3 :(得分:0)
s = b'\ x04NZ \ xdf \ x7f \ xab'
1) 导入结构 ssid_2 =“%02x:%02x:%02x:%02x:%02x:%02x”%struct.unpack(“ BBBBBB”,s)
或
2) ':'。join(f in {x:02x}'for s in x)
但是1)比2)快
答案 4 :(得分:0)
在 Python 3.8 及更高版本中,您只能使用bytes.hex
。
b'\x85n:\xfaGk'.hex(":") // -> '85:6e:3a:fa:47:6b'
答案 5 :(得分:-1)
通常的十六进制格式是不是人类可读的? (see this表示将字节转换为十六进制的方法)
de:ad:be:ef:ca:fe
顺便提一下,这是大多数软件中显示MAC地址的方式(只是Windows使用破折号而不是冒号)。