首页 > 解决方案 > 如何从输入中接受一个mac地址并在python中打印下三个macaddress

问题描述

我是 Python 和编码的新手。我的要求很简单。

我将提示用户输入 MAC 地址。输入后,我将打印接下来的 3 个 mac 地址。例如,如果输入的 MAC 地址是 00:00:00:00:00:00,我应该能够以 00:00:00:00:00:01 00:00:00 的格式打印接下来的 3 个 MAC 地址: 00:00:02 00:00:00:00:00:03

请帮忙

标签: pythonhexmac-address

解决方案


首先使用正则表达式来验证您的 MAC 地址。如果格式正确,则只需删除:字符即可为您提供一个可以转换为整数的 HEX 值。使用此整数计算接下来的 3 个值。对于每个整数,将值转换回十六进制字符串(前面有适当的零填充)。然后打印输出,将丢失的:字符放回:4

import re

mac_address = input('Please enter a MAC address: ')
valid = re.match('(?=[a-f0-9]{2}:){5}[a-f0-9]{2}', mac_address, re.I)

if valid:
    mac_as_int = int(mac_address.replace(':', ''), 16)

    for address in range(mac_as_int + 1, mac_as_int + 4):
        output = '{:012X}'.format(address)
        print('{}:{}:{}:{}:{}:{}'.format(output[0:2], output[2:4], output[4:6], output[6:8], output[8:10], output[10:12]))
else:
    print('Invalid MAC address')

这将正确处理值延续到下一个块的情况:

Please enter a MAC address: 00:00:00:00:00:00
00:00:00:00:00:01
00:00:00:00:00:02
00:00:00:00:00:03

Please enter a MAC address: 11:22:33:44:55:FE
11:22:33:44:55:FF
11:22:33:44:56:00
11:22:33:44:56:01

推荐阅读