Уведомления

Группа в Telegram: @pythonsu

#1 Июль 5, 2012 15:38:12

abogdan
Зарегистрирован: 2012-06-25
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

List и MAC'и

Как создать список с элементами-mac адресами вида 0x12345678?
У меня получилось

def nromtest(host, *maclist): # пример: nromtest('com9',0xd05,0x80024366,0x8002432e,0x80024376....)
Но он определяет их как hex. При выводе их через hex() из 0x12345678 получается 0x12345678L, но только в случае с 10 значным mac'ом. Также при использовании в адресе не 16ричного символа выдает ошибку. Вопрос: как можно реализовать в данной функции параметр-список с неопределенным заранее количеством адресов такого вида? Чем меньше заморочек, тем лучше..
Заранее благодарен за помощь.

Отредактировано abogdan (Июль 5, 2012 15:41:58)

Офлайн

#2 Июль 5, 2012 17:04:23

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

List и MAC'и

Может надо хранить в строках? listMac = [x for x in maclist] или даже listMac = list(maclist)

Отредактировано Singularity (Июль 5, 2012 17:07:02)

Офлайн

#3 Июль 5, 2012 17:06:05

abogdan
Зарегистрирован: 2012-06-25
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

List и MAC'и

Singularity
Может надо хранить в строках?
listMac =
Сеть большая.. Строк будет не организоваться..

Офлайн

#4 Июль 6, 2012 06:23:13

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

List и MAC'и

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
Также при использовании в адресе не 16ричного символа выдает ошибку.
А откуда в mac-адресе не 16ричные символы?:/



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version