Супер, дерзай при това положение. За човек, който сега се учи, смело използваш указатели и битови операции (според мен това е начина

) иначе след като го получаваш във стринг, може би ще ти е интересно да разгледаш функциите sscanf и sprintf. Виждам, че и сам добре си разкопаваш нещата, което е добре, но все пак да ти дам едно примерче:
GeSHi (C):
// Приемаме че по някакъв начин си стигнал до този вход
char *ip_str="192.168.1.1"
int ip_int[4];
// Справяш се с адресната аритметика, така че смело...
sscanf(ip_str, "%d.%d.%d.%d", ip, ip+1, ip+2, ip+3);
// ip_int изглежда така = {192, 168, 1, 1}
// яко е и мисля че ще се впише в твойта концепция, макар че признавам не се задълбочих в кода ти
Разбира се аз бих ползвал char, а не int, за да не се разхищава излишно памет, но това са си лично мои изкривявания. Ползвайки получените стойности можеш да ползваш първия метод на боп_боп_мара. Обратната операция също би се улеснила със sprintf (приниципа е същия).
Поздрави,
Ицо