php - iptolong是如何工作的

标签 php mysql algorithm ip

众所周知long2ip的作用是ip1.ip2.ip3.ip4(123.131.231.212)

long ip => (ip1 * 256 * 256 * 256) + (ip2 * 256 * 256) + (ip3 * 256) + ip4
2072242132 => (123 * 256 * 256 * 256) + (131 * 256 * 256) + (231 * 256) + 212

但是将此数字转换回 IP 地址的伪代码是什么?

此外,对于每秒大约有 500 多个 IP 查询的流量分析网站,在 MySQL 中存储 IP 地址的最合适方式是什么?

如果为每个 IP 创建一个具有唯一 ID 的表,然后将其用于查找,会不会更好?

谢谢

最佳答案

$long = ip2long("123.131.231.212");

$ip = array();
array_unshift($ip, $long & 0xFF);
array_unshift($ip, ($long >>= 8) & 0xFF);
array_unshift($ip, ($long >>= 8) & 0xFF);
array_unshift($ip, ($long >>= 8) & 0xFF);

// $ip =
// Array
// (
//     [0] => 123
//     [1] => 131
//     [2] => 231
//     [3] => 212
// )

关于php - iptolong是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5162495/

相关文章:

php - MySQLi 多重查询,访问第二个数组

java - XAMPP Mysql packet too big异常如何解决

algorithm - 多边界框包含检测算法

php - 登录信息页面未重定向

mysql - 查询 MySQL 数据库

java - 找到最大的子树

c++ - 为什么程序因错误 exc_bad_access code=exc_i386_gpflt 而中断

javascript - jQuery 在传递 POST 数据时在新选项卡中打开页面

php - Etsy PHP API - 交付选项

php - 如何检查当前帖子是 Wordpress 中的第一篇还是最后一篇