Если хотите изобретать велосипед, по при помощи модуля
struct запакуйте 32-битное значение в строку и распакуйте результат как 4 байта.
Если хотите решить задачу без излишних усилий, можете воспользоваться модулем
netaddr:
>>> import netaddr
>>> int(netaddr.IPAddress('77.88.21.8'))
1297618184
>>> str(netaddr.IPAddress(1297618184))
'77.88.21.8'
UPD:
у меня была задача именно самому выполнить эти преобразования,
Держите тогда два модных однострочника:
def long_to_dotted_decimal(val):
return '.'.join(map(str,[val%256**idx/256**(idx-1) for idx in xrange(4,0,-1)]))
def dotted_decimal_to_long(strval):
return sum(map(lambda (power,octet):256**power*int(octet),enumerate(reversed(strval.split('.')))))
Пример использования:
>>> long_to_dotted_decimal(dotted_decimal_to_long('127.0.0.1'))
'127.0.0.1'
>>> long_to_dotted_decimal(dotted_decimal_to_long('255.255.255.255'))
'255.255.255.255'
>>> long_to_dotted_decimal(1297618184)
'77.88.21.8'
>>> dotted_decimal_to_long('77.88.21.8')
1297618184