De er næsten nøjagtig ens. ip2long returnerer nogle gange en negativ værdi, fordi PHP bruger signerede tal til værdiansættelse, mens MySQL bruger usignerede.
Begge evalueres som x*(2^24) + y*(2^16) + z*(2^8) + w*(2^0)
, men i PHP, på grund af den lange signering, vil vise negative værdier for visse IP-adresser.
For signed long, the range is
(2^31) - 1 = −2,147,483,648 to +2,147,483,647
Så adresser, mens de oversættes til over +2.147.483.647, vil omsluttes og give negative værdier.
ip2long("254.254.254.254"); // -16843010
Dette link beskriver dette i detaljer.