2015-08-13 1 views
1

У меня есть строка "aa2a.aaa2.aaaa". Я хочу передать это как строковый параметр, но это нужно преобразовать в адрес mac, используя какой-либо шестнадцатеричный метод преобразования. Как преобразовать строку в шестнадцатеричный?Как преобразовать строку var в hex в Python

hex(mac) 

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

+7

Что вы ожидаете от вывода? –

+0

Почему точки между ними? –

+0

Вы хотите получить 'aa: 2a: aa: a2: aa: aa''? например, 's =" aa2a.aaa2.aaaa ".replace ('.', '');' 'mac =": ". join (s [i: i + 2] для i в диапазоне (0, len (s), 2)) ' – jfs

ответ

2

Вы не можете применить hex на вашей строке, поскольку она содержит символы точечными вы можете разделить его точку и преобразовать их в междунар с основанием 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, который вы можете справиться с этим с исключением.