python从6字节字符串中打印mac地址
我有6字节字符串的mac地址。您将如何以“人类”可读的格式打印它python从6字节字符串中打印mac地址,python,printing,tcp,Python,Printing,Tcp,我有6字节字符串的mac地址。您将如何以“人类”可读的格式打印它 谢谢通常的十六进制格式是否不够可读?(用于将字节转换为十六进制的方法) 顺便说一句,这是大多数软件显示MAC地址的方式(只是Windows使用破折号而不是冒号)。试试看 for b in addr: print("%02x:" % (b)) 其中addr是字节数组。无需使用struct: import struct "%x:%x:%x:%x:%x:%x" % struct.unpack("BBBBBB",your_var
谢谢通常的十六进制格式是否不够可读?(用于将字节转换为十六进制的方法) 顺便说一句,这是大多数软件显示MAC地址的方式(只是Windows使用破折号而不是冒号)。试试看
for b in addr:
print("%02x:" % (b))
其中addr是字节数组。无需使用
struct
:
import struct
"%x:%x:%x:%x:%x:%x" % struct.unpack("BBBBBB",your_variable_with_mac)
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'
s=b'\x04NZ\xdf\x7f\xab' (一) 导入结构 ssid_2=“%02x:%02x:%02x:%02x:%02x:%02x”%struct.unpack(“BBBBBB”,s) 或 (二) “:”.join(s中x的f“{x:02x}”) 但是在Python3.8及更高版本中,1)要比2)快得多
也许为了使它更具可读性,您可以实际查找制造商。我发现
b.encode('hex')
比'%02x'%ord(b)
可读性稍高,但效果相同。您可能应该使用%02x
而不是%x
。否则,16以下的字节缺少前面的0。
>>> prettify(b'5e\x21\x00r3')
'35:65:21:00:72:33'
b'\x85n:\xfaGk'.hex(":") // -> '85:6e:3a:fa:47:6b'