Форум сайта python.su
0
Как создать список с элементами-mac адресами вида 0x12345678?
У меня получилось
def nromtest(host, *maclist): # пример: nromtest('com9',0xd05,0x80024366,0x8002432e,0x80024376....)
. При выводе их через hex() из 0x12345678 получается 0x12345678L
, но только в случае с 10 значным mac'ом. Также при использовании в адресе не 16ричного символа выдает ошибку. Вопрос: как можно реализовать в данной функции параметр-список с неопределенным заранее количеством адресов такого вида? Чем меньше заморочек, тем лучше..
Отредактировано abogdan (Июль 5, 2012 15:41:58)
Офлайн
75
Может надо хранить в строках? listMac = [x for x in maclist] или даже listMac = list(maclist)
Отредактировано Singularity (Июль 5, 2012 17:07:02)
Офлайн
0
SingularityСеть большая.. Строк будет не организоваться..
Может надо хранить в строках?
listMac =
Офлайн
72
abogdanНу все у вас правильно, именно так, как вы написали.
Как создать список с элементами-mac адресами вида 0x12345678?
У меня получилосьdef nromtest(host, *maclist): # пример: nromtest('com9',0xd05,0x80024366,0x8002432e,0x80024376....)
abogdanНу так вы их и определяете как шестнадцатиричное число, внутри это все равно двоичное число, с каким бы базисом не задавали
Но он определяет их как hex:mad:.
abogdanА выводить через свою функцию форматирования
При выводе их через hex() из 0x12345678 получается 0x12345678L:/, но только в случае с 10 значным mac'ом.
def mac2str(mac): return ":".join("%02X" % ((mac >> (5 - i) * 8) & 0xff) for i in range(0, 6)) >>> print mac2str(0xd05) 00:00:00:00:0D:05 >>> print mac2str(0x80024366) 00:00:80:02:43:66 >>> print mac2str(0x8002432e) 00:00:80:02:43:2E
abogdanА откуда в mac-адресе не 16ричные символы?:/
Также при использовании в адресе не 16ричного символа выдает ошибку.
Офлайн