簡體   English   中英

蟒蛇。 打印 6 字節字符串中的 mac 地址

[英]Python. Print mac address out of 6 byte string

我有 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 (或bytes在Python 3),這是一種更自然的選擇,而不是給出的數據性質的字符串,那么你也將不需要ord功能。

用法示例:

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

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

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

試試,

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

其中 addr 是您的字節數組。

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

1) 導入 struct ssid_2 = "%02x:%02x:%02x:%02x:%02x:%02x" % struct.unpack("BBBBBB", s)

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

但是 1) 比 2) 快得多

通常的十六進制格式不夠人類可讀嗎? 有關將字節轉換為十六進制的方法, 請參閱this

de:ad:be:ef:ca:fe

順便說一下,這是大多數軟件中 MAC 地址的顯示方式(只有 Windows 使用破折號而不是冒號)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM