将ip转换为long的代码

「已注销」 2007-12-12 06:40:21
想了半天,就想出了这个办法:
<%@ Language="JScript" %>
<%
var userip =Request.ServerVariables("REMOTE_ADDR");
var strip=new String(userip);
var intip=0x00000000;

%>
<html>
<body>
<%
Response.Write(userip+"<BR>");
userip=strip.split(".");
intip=(userip[0]<<24)+(userip[1]<<16)+(userip[2]<<8)+userip[3];
Response.Write(intip);
%>
</body>
</html>
有这么几个问题:
1.js默认把intip转换为"有符号型 long",所以会出现负数的情况,怎么可以直接转换为"unsigned long"型?
2.位运算应该比直接将四个IP段乘以各自的位权的方法效率高吧?
3.js中有没有将"int"转换为十六进制的字符串的方法,或者说怎么解决这个问题?

高手请不吝金言!
...全文
96 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2007-12-13
  • 打赏
  • 举报
回复
首先谢谢您!
由于脚本语言没有我平时用的那些高级语言严谨,所以思路一时打不开.

出现复数的情况是这样的:

<!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位长,所以会出现复数.
zhengshaodong 2007-12-12
  • 打赏
  • 举报
回复

<!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>

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧