如果我们有一个如下的IP地址:
127.0.0.1
这两个函数是否将 ip 地址转换为相同的数字,或者它们是否不同并具有不同的结果?
它们几乎完全相同。ip2long有时会返回负值,因为 PHP 使用有符号数进行估值,而 MySQL 使用无符号数。
两者都被评估为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,147,483,647 时将环绕并给出负值。
ip2long("254.254.254.254"); // -16843010
此链接详细描述了这一点。
简而言之,不,但这个功能是:
function ipv4touint($ipv4){
return sprintf('%u',ip2long($ipv4));
}