Найти - Пользователи
Полная версия: Помогите с алгоритмом
Начало » Python для новичков » Помогите с алгоритмом
1
evilempirer
На вводе получаем диапазон ip адресов вида 10.10.20.0-10.10.30.0 или подобного (главное что первый всегда меньше последнего), необходимо нагенерить все ip адреса в этом промежутке. У меня пока получается очень наворочено и неудобоваримо. Может кто подкинет мысль как это сделать изящно используя python way.
Lexander
IP Address Manipulation Library: http://www.python.org/dev/peps/pep-3144/
zheromo
както писал для себя преобразование ip в целое и наооборот, чтобы хранить в базе

дано startip и endip

ip2int = lambda ip: reduce(lambda a,b: a*256+b, map(int, ip.split('.')), 0)
int2ip = lambda i: "%s.%s" % (int2ip(i/256), i%256) if i/256 else "%s" % (i%256,)

for ip in xrange(ip2int(startip),ip2int(endip)+1):
print int2ip(ip)
Alex2ndr
Lexander
IP Address Manipulation Library: http://www.python.org/dev/peps/pep-3144/
Гхм… А оно для питона 2.x есть?

По сабжу. Я тут маялся как-то таким. Вот - http://www.python.su/forum/viewtopic.php?id=6238
Суть проблемы не совсем та что у вас, но примеры те что надо :)
evilempirer
Да бы не плодить темы, есть строка ip = ‘10.10.10.0’ надо из нее сделать строку ‘10.10.11.0’ то есть 3 октет +1
Alex2ndr
evilempirer
Да бы не плодить темы
Это называется offtop. Каждому вопросу - своя тема.

evilempirer
есть строка ip = ‘10.10.10.0’ надо из нее сделать строку ‘10.10.11.0’ то есть 3 октет +1
И в чем проблема? преобразовываете к списку октетов, потом добавляете к нужному октету единицу и собираете назад в строку:
In [13]: ip = '10.10.10.1'

In [14]: l = map(int,ip.split('.'))

In [15]: l[2]+=1

In [16]: '.'.join(map(str,l))
Out[16]: '10.10.11.1'
Если таких операций много, то используете регулярки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB