我有一个字符串"aa2a.aaa2.aaaa"
。我想将此作为字符串参数传递,但应使用一些十六进制转换方法将其转换为mac地址。如何将字符串转换为十六进制?
hex(mac)
上面的方法不会有帮助,因为它只会将字符串转换为十六进制值。
答案 0 :(得分:2)
您不能在字符串上应用hex
,因为它包含可以用点分割的点字符,并将它们转换为带有基数16的int,然后转换为十六进制:
>>> s="aa2a.aaa2.aaaa"
>>> '.'.join(map(lambda x:hex(int(x,16)),s.split('.')))
'0xaa2a.0xaaa2.0xaaaa'
或者,如果您确定所有文字都是有效的基数16,您只需执行以下操作:
>>> s="aa2a.aaa2.aaaa"
>>> '.'.join(map(lambda i:'0x{}'.format(i),s.split('.')))
'0xaa2a.0xaaa2.0xaaaa'
如果不是这样,第一个解决方案会引发一个ValueError
,你可以用异常处理它。