Intereting Posts

Является ли ip2long () в PHP равным функции INET_ATON () в MySQL?

Если у нас есть ip-адрес, как показано ниже:

127.0.0.1 

Ли обе функции преобразуют ip-адрес в один номер или отличаются друг от друга и имеют разные результаты?

Они почти точно такие же. ip2long иногда возвращает отрицательное значение, потому что PHP использует подписанные числа для оценки, тогда как MySQL использует unsigned.

Оба они оцениваются как x*(2^24) + y*(2^16) + z*(2^8) + w*(2^0) , но в PHP из-за долгого подписания будет показано отрицательное значения для определенных IP-адресов.

 For signed long, the range is (2^31) - 1 = −2,147,483,648 to +2,147,483,647 

Таким образом, адреса при переходе на более чем 2 142 473 647 обернутся и дадут отрицательные значения.

 ip2long("254.254.254.254"); // -16843010 

Эта ссылка описывает это подробно.

Короче говоря, нет, но эта функция:

 function ipv4touint($ipv4){ return sprintf('%u',ip2long($ipv4)); }