我目前正在尝试学习php,并且在ip2long()函数时遇到了麻烦。
$ipToConvert = '46.21.13.34';
$ip = ip2long($ipToConvert);
echo $ipToConvert;
echo $ip;
预期结果是第一回显显示46.21.13.34,第二回显显示46211334。
我得到的结果是第一个确实显示46.21.13.34,但是第二个回显却显示773131554。
答案 0 :(得分:2)
ip2long
的工作方式不是这样。它将4个字节转换为长值。
例如,a.b.c.d
被转换为(a << 24) + (b << 16) + (c << 8) + d
您可能想要的是从字符串中删除点并将结果转换为数字:
intval(str_replace('.', '', $ip));
或者,由于结果可能溢出,因此转换为浮点数
floatval(str_replace('.', '', $ip));