Как преобразовать строковую переменную в шестнадцатеричный в Python

у меня есть строка "aa2a.aaa2.aaaa". Я хочу передать это как строковый параметр, но он должен быть преобразован в MAC-адрес с помощью какого-либо метода преобразования в шестнадцатеричный формат. Как преобразовать строку в шестнадцатеричный?

hex(mac)

Вышеупомянутый метод не поможет, так как он просто преобразует строку в ее шестнадцатеричное значение.


person oak1208    schedule 13.08.2015    source источник
comment
Что вы ожидаете в результате?   -  person Anand S Kumar    schedule 13.08.2015
comment
Почему точки между ними?   -  person Malli Paritala    schedule 13.08.2015
comment
Вы хотите получить 'aa:2a:aa:a2:aa:aa'? например, s = "aa2a.aaa2.aaaa".replace('.', ''); mac = ":".join(s[i:i+2] for i in range(0, len(s), 2))   -  person jfs    schedule 13.08.2015


Ответы (1)


Вы не можете применить hex к своей строке, потому что она содержит символы точек, которые вы можете разделить на точку и преобразовать их в int с базой 16, а затем преобразовать в шестнадцатеричный:

>>> 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, с которым вы можете справиться с исключением.

person kasravnd    schedule 13.08.2015