Salve a tutti,

avrei una curiosità da togliere.... allora ho uno script in javascript trovato su internet che mi trasforma un ip in decimale....

codice:
<script language="javascript">

function Ip2Long(ip){

    try{

      var sip = ip.split('.');

      var lRet = parseFloat(sip[0] * 256 * 256 * 256)

            + parseFloat(sip[1] * 256 * 256)

            + parseFloat(sip[2] * 256)

             + parseFloat(sip[3])

      return lRet;

    }

    catch(err){

      return 0;

    }

}


alert(Ip2Long('192.168.1.1'));


</script>
il risultato è 3232235777
se converto lo stesso ip con la funzione predefinita di php (ip2long()), il risultato è diverso -1062731519.
Allora nella funzione in javascript, senza neanche sapere quello che ho fatto, ho messo un and binario nel return

return lRet & lRet;

e adesso cosi lo script funziona, mi da lo stesso risultato di php.... qualcuno di voi saprebbe spiegarmi che fa aggiungedo l'AND binario??
e poi perchè mi viene fuori un valore negativo?? se confrontiamo in binario questo valore 3232235777, dovrebbe uscire fuori sempre lo stesso.