Python 3.x 如何将字符串格式化为十六进制,然后再格式化为二进制?

Python 3.x 如何将字符串格式化为十六进制,然后再格式化为二进制?,python-3.x,Python 3.x,我试图编写一个进程,用户输入一个物理MAC地址,然后执行EUI64进程。但我不知道如何将字母(第一个或第二个单词字符)转换为十六进制值。例如: mac_ad = input('Enter Your MAC address : ') (for example : BE-F0-84-DE-2F-53) 因此,在这种情况下,程序必须将“B”和“E”转换为二进制。此外,MAC地址可以以数字开头,因此程序应该确定它是数字还是字母。MAC地址的标准格式是6组两个十六进制数字,用连字符分隔。十六进制的“B

我试图编写一个进程,用户输入一个物理MAC地址,然后执行EUI64进程。但我不知道如何将字母(第一个或第二个单词字符)转换为十六进制值。例如:

mac_ad = input('Enter Your MAC address : ') (for example : BE-F0-84-DE-2F-53) 
因此,在这种情况下,程序必须将“B”和“E”转换为二进制。此外,MAC地址可以以数字开头,因此程序应该确定它是数字还是字母。MAC地址的标准格式是6组两个十六进制数字,用连字符分隔。十六进制的“B”是1011,“E”是1110(二进制),在EUI64过程中,第七位应替换为相反的位(此处其“1”和相反的是“0”)。二进制变为1011100(E变为十进制的C,因此其BC而不是be) 之后,程序应打印BC-


我应该怎么做?

要检查字符是否为字母,可以使用:

mac_address = 'BE-F0-84-DE-2F-53'
print(mac_address[0].isalpha())
如果字符是字母,则返回true。(可以使用.isdigit()检查整数)

可能有一种更简单的方法可以做到这一点,但这应该适用于转换第二个字符(请注意,无论字符是数字还是字母,只要它是有效的十六进制字符,这都可以实现):

要将值作为字符串返回,我们可以使用format函数:

print(format(encoded_array[0], '02x'))
>>>be
print(format(toggled_array[0], '02x'))
>>>bc
如果需要大写字母:

print(format(toggled_array[0], '02x').upper())
>>>BC

非常感谢。这对我帮助很大。很高兴我能帮上忙!
print(format(encoded_array[0], '02x'))
>>>be
print(format(toggled_array[0], '02x'))
>>>bc
print(format(toggled_array[0], '02x').upper())
>>>BC