日期:2014-05-16  浏览次数:20452 次

求助!IP转换成INT型的问题
function ip_translate_from_str(ip_str)
{
var ip_int = 0;
if(is_ip(ip_str))
{
var ip_split = ip_str.split('.');
ip_int |= parseInt(ip_split[0]);
ip_int |= parseInt(ip_split[1]) << 8;
ip_int |= parseInt(ip_split[2]) << 16;
ip_int |= parseInt(ip_split[3]) << 24;
}
return ip_int;
}
该方法转换如192.168.1.128及以上同网段IP时会返回一个负数,请问是为啥~~

------解决方案--------------------
HTML code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>new document</title>
    <script type="text/javascript">
    function ip2num(ip){
        var arr = ip.split("."), x = 1, ret = 0;
        for(var i = 0; i < arr.length; i++){
            ret += arr[i] * x;
            x *= 256;
        }
        return ret;
        
    }
    function num2ip(n){
        var ret = [], x = 256 * 256 * 256;
        for(var i = 0; i < 4; i++){
            ret.push(parseInt(n / x));
            n %= x;
            x /= 256;
        }
        return ret.reverse().join(".");
    }
    var n = ip2num("192.168.1.228");
    alert(n);
    alert(num2ip(n));
    </script>
</head>
<body>

</body>
</html>