javascript把IP地址转为数值几种方案,来挑战一下效率吧 您所在的位置:网站首页 11000000的十六进制 javascript把IP地址转为数值几种方案,来挑战一下效率吧

javascript把IP地址转为数值几种方案,来挑战一下效率吧

#javascript把IP地址转为数值几种方案,来挑战一下效率吧| 来源: 网络整理| 查看: 265

为什么要转化IP地址:

点分十进制表示法只是为了让人好记忆,并不能用于电脑运算;

数据库中跟IP地址有的字段一般都会存成整数,这样便于查询,也可以提高了查询速度;

javascript中转换的几种方案:

首先说一下IP地址的验证,

这里就用正则表达式验证的方式,表达式如下

var REG =/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;

后面代码中用到 REG 就是这个了 , 虽然这个正则表达式有点长,但用它可以把验证和分割一步到位,后面转换的时候就省掉了分割IP地址的步骤;

方案1:每8位转成16进制字符,拼接后转成整数 当IP地址通过用“.”分割后,每一段都因该是8位,所以我们刚好可以转成两位的16进制数,然后拼接16进制的字符串,再转为数字就OK了。   function ipToInt(IP){ var xH = "",result = REG.exec(ip); if(!result) return -1; for (var i = 1; i 15 ? "" : "0") + h.toString(16); } return parseInt(xH, 16); }

如果不要验证的话就可以换一个帅气一点的写法:

function ipToInt(IP){ return parseInt(IP.replace(/\d+\.?/ig,function(a){ a = parseInt(a); return (a > 15 ? "" : "0") + a.toString(16); }),16); } 方案2:直接计算 知道了IP地址的结构,不难想到只要给分割之后的数字乘以相应的数,再加起来就OK了; function ipToInt(IP){ var xH = "",result = REG.exec(ip); if(!result) return -1; return (parseInt(result[1]) * 0x1000000 + parseInt(result[2]) * 0x10000 + parseInt(result[3]) * 0x100 + parseInt(result[4])); } 方案3:按位计算

直接记算还不如按位运算,那不是更快?

function ipToInt(IP){ var xH = "",result = REG.exec(ip); if(!result) return -1; return (parseInt(result[1]) >24) + "." + (INT>>16 & 0xFF) + "." + (INT>>8 & 0xFF) + "." + (INT & 0xFF); }

转载请注明出处 http://www.cnblogs.com/whyoop,谢谢!

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有