如果我们有一个IP地址如下:
127.0.0.1
Run Code Online (Sandbox Code Playgroud)
这两个函数是否将ip地址转换为相同的数字,或者它们是否有所不同并且结果不同?
Ani*_*han 10
它们几乎完全一样.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
Run Code Online (Sandbox Code Playgroud)
因此,转换为超过+2,147,483,647时的地址将回绕并给出负值.
ip2long("254.254.254.254"); // -16843010
Run Code Online (Sandbox Code Playgroud)
此链接详细描述了这一点.
总之,不,但这个功能是:
function ipv4touint($ipv4){
return sprintf('%u',ip2long($ipv4));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5602 次 |
| 最近记录: |