Đây không phải là giải pháp ngắn nhất, nhưng nó chấp nhận tất cả các loại định dạng mac phổ biến làm đầu vào. Nó cũng thực hiện một số kiểm tra xác nhận.
import re
def format_mac(mac: str) -> str:
mac = re.sub('[.:-]', '', mac).lower() # remove delimiters and convert to lower case
mac = ''.join(mac.split()) # remove whitespaces
assert len(mac) == 12 # length should be now exactly 12 (eg. 008041aefd7e)
assert mac.isalnum() # should only contain letters and numbers
# convert mac in canonical form (eg. 00:80:41:ae:fd:7e)
mac = ":".join(["%s" % (mac[i:i+2]) for i in range(0, 12, 2)])
return mac
Dưới đây là danh sách các chuỗi địa chỉ mac và liệu họ sẽ được coi là hợp lệ hay không hợp lệ:
'008041aefd7e', # valid
'00:80:41:ae:fd:7e', # valid
'00:80:41:AE:FD:7E', # valid
'00:80:41:aE:Fd:7E', # valid
'00-80-41-ae-fd-7e', # valid
'0080.41ae.fd7e', # valid
'00 : 80 : 41 : ae : fd : 7e', # valid
' 00:80:41:ae:fd:7e ', # valid
'00:80:41:ae:fd:7e\n\t', # valid
'aa:00:80:41:ae:fd:7e', # invalid
'0:80:41:ae:fd:7e', # invalid
'ae:fd:7e', # invalid
'$$:80:41:ae:fd:7e', # invalid
Tất cả những giá trị sẽ được trả lại theo hình thức kinh điển như:
'00:80:41:ae:fd:7e'
Nguồn
2015-04-04 11:55:32
http://stackoverflow.com/questions/4959741/python-print-mac-address-out-of-6-byte-string –
@EricFortis, ví dụ đó là khác nhau, trong đó địa chỉ MAC nằm trong chuỗi nhị phân. Câu hỏi này có chuỗi ascii là điểm bắt đầu – TJD
@Eric: hơi khác, tôi thấy câu hỏi và câu trả lời này nhưng nó không trả lời câu hỏi cụ thể này – jftuga