<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>例子</title>
<script type="text/javascript">
function IPNumber(ip)
{
    var ips = ip.split('.');
    return ips[0]*256*256*256 + ips[1]*256*256 + ips[2]*256 + ips[3];
}
alert(IPNumber("255.255.255.255"));
</script>
</head>
<body>
</body>
</html>
怎么我怎么算都不会出现负数呢?1 js里貌似没有long  js里的int很大了 忘记多大 自己查 如果需要更大可以用浮点数或者自己写个类
2 这个据说位操作是比较高效点 不过我确实不知道
3 int转换成16进制字符串<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>例子</title>
<script type="text/javascript">
var test = 16;
alert(test.toString(16));
</script>
</head>
<body>
</body>
</html>

解决方案 »

  1.   

    首先谢谢您!
    由于脚本语言没有我平时用的那些高级语言严谨,所以思路一时打不开.出现复数的情况是这样的:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title></title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </head>
    <body>
    <script language=javascript>
    <!--
    var test1=1;
    var test2=1,temp;
    test1<<=31;
    alert(test1);
    temp=test2*256*256*256*128;
    alert(temp);
    //-->
    </script>
    </body>
    </html>也就是说,位操作和直接相乘结果不一样.
    位操作时,数据只有32位长,所以会出现复数.