曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3392|回复: 0
打印 上一主题 下一主题

long2ip() -- 将网络地址转换为点分十进制形式(IPv4)

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2012-6-13 12:23:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
long2ip() 可以将 IPv4 的网络地址(一般为长整型)形式转换为点分十进制形式。它的作用类似于 socket  C 库函数中的 inet_ntop()  。

测试代码:
[PHP] 纯文本查看 复制代码
<?php

for($i = 0; $i < 20; $i++) {
        echo RandIPAddr();
        echo "<br>";
}

function RandIPAddr()
{
        $ip_long = array(
                        array('607649792', '608174079'), //36.56.0.0-36.63.255.255
                        array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255
                        array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255
                        array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255
                        array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255
                        array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255
                        array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255
                        array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255
                        array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255
                        array('-569376768', '-564133889'), //222.16.0.0-222.95.255.255
                        );

        $rand_key = mt_rand(0, 9);
        $ip = long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));

        return $ip;
}
?>

运行输出:
222.86.67.187
182.90.214.227
210.39.82.46
171.13.146.37
... ...
106.93.5.102
210.36.162.88
上面代码中,数组里存放的是经过 ip2long() 函数转换过的用以网络传输的 IP 地址长整型形式。它的逆函数是 ip2long()
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 01:21 , Processed in 0.079338 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表