<!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>
由于脚本语言没有我平时用的那些高级语言严谨,所以思路一时打不开.出现复数的情况是这样的:<!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位长,所以会出现复数.