grazie mille adesso è veramente più chiaro... sei stato molto esauriente

ho creato la funzione inversa

codice:
function long2ip(ip_start) {

	var ip=0;

	if (ip_start < 0){

		ip = ip_start + 4294967296;

	}

    with (Math) {
        var ip1 = floor(ip/pow(256,3));	
        var ip2 = floor((ip%pow(256,3))/pow(256,2));
        var ip3 = floor(((ip%pow(256,3))%pow(256,2))/pow(256,1));
        var ip4 = floor((((ip%pow(256,3))%pow(256,2))%pow(256,1))/pow(256,0));
    }


    return ip1 + '.' + ip2 + '.' + ip3 + '.' + ip4;
}
dato che nel caso di long parliamo di un numero binario di 32 bit, posso considerare che il segno sarà sempre e solo il primo bit da sinistra e il valore da sommare 4294967296....cmq una cosa che non mi è chiara c'è, 2 elevata 32 fa 4294967296 che convertendo in binario non sono 32 bit ma 33, cioè il primo bit è uno e invece di avere 31 0 ne ho 32