Mereka hampir persis sama. ip2long terkadang mengembalikan nilai negatif karena PHP menggunakan angka yang ditandatangani untuk penilaian, sedangkan MySQL menggunakan yang tidak ditandatangani.
Keduanya dievaluasi sebagai x*(2^24) + y*(2^16) + z*(2^8) + w*(2^0)
, tetapi di PHP, karena lama ditandatangani, akan menunjukkan nilai negatif untuk alamat IP tertentu.
For signed long, the range is
(2^31) - 1 = −2,147,483,648 to +2,147,483,647
Jadi, alamat saat diterjemahkan ke lebih dari +2.147.483.647 akan membungkus dan memberikan nilai negatif.
ip2long("254.254.254.254"); // -16843010
tautan ini menjelaskan ini secara rinci.