繁体   English   中英

PHP中的ip2long()是否等于MySQL中的INET_ATON()函数?

[英]Is ip2long() in PHP equal to INET_ATON() function in MySQL?

如果我们有一个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));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM