php操作ip与整数互转

转成整数只能适用ipv4,ipv6本身就是个字符串

v4

// 假设有一个 IPv4 地址
$ip = '192.168.1.1';

// 将 IP 地址转换为整数
$ipLong = ip2long($ip);

// 检查转换是否成功
if ($ipLong != -1) {
    // 将整数转换回 IP 地址
    $ipBack = long2ip($ipLong);

    echo "原始 IP 地址: $ip\n";
    echo "转换后的整数: $ipLong\n";
    echo "转换回的 IP 地址: $ipBack\n";
} else {
    echo "无效的 IP 地址\n";
}
原始 IP 地址: 192.168.1.1
转换后的整数: 3232235777
转换回的 IP 地址: 192.168.1.1

v6

// 假设有一个 IPv6 地址
$ipv6 = '2001:0db8:85a3:0000:0000:8a2e:0370:7334';

// 将 IPv6 地址转换为二进制表示形式
$ipv6Binary = inet_pton($ipv6);

// 检查转换是否成功
if ($ipv6Binary !== false) {
    // 二进制字符串
    echo "IPv6 地址的二进制表示: " . bin2hex($ipv6Binary) . "\n";
    
    // 将二进制表示形式转换回 IPv6 地址
    $ipv6Back = inet_ntop($ipv6Binary);

    echo "原始 IPv6 地址: $ipv6\n";
    echo "转换回的 IPv6 地址: $ipv6Back\n";
} else {
    echo "无效的 IPv6 地址\n";
}
IPv6 地址的二进制表示: 20010db885a3000000008a2e03707334
原始 IPv6 地址: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
转换回的 IPv6 地址: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
posted @ 2024-06-12 15:02  朝阳1  阅读(72)  评论(0)    收藏  举报