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>