本文介绍了在JavaScript中实现IP地址与整数相互转换的两种代码方案。第一种方法利用位运算进行转换,第二种方法通过算术运算实现。代码包含IP合法性判断逻辑,适用于验证用户输入的IP段是否合法,如192.168.1.11-192.168.1.134等场景,开发者可直接参考使用。
IP地址与整数转换实现
该功能主要用于在JavaScript环境中判断用户输入的IP地址段是否合法,例如验证类似192.168.1.11-192.168.1.134这样的IP范围。
以下是第一种实现方式的具体代码:
function ipToNumber(ip) {
var num = 0;
if(ip == "") {
return num;
}
var aNum = ip.split(".");
if(aNum.length != 4) {
return num;
}
num += parseInt(aNum[0]) << 24;
num += parseInt(aNum[1]) << 16;
num += parseInt(aNum[2]) << 8;
num += parseInt(aNum[3]) << 0;
num = num >>> 0;//这个很关键,不然可能会出现负数的情况
return num;
}
function numberToIp(number) {
var ip = "";
if(number <= 0) {
return ip;
}
var ip3 = (number << 0 ) >>> 24;
var ip2 = (number << 8 ) >>> 24;
var ip1 = (number << 16) >>> 24;
var ip0 = (number << 24) >>> 24
ip += ip3 + "." + ip2 + "." + ip1 + "." + ip0;
return ip;
}
第二种实现方式代码如下:
//IP转成整型
function _ip2int(ip)
{
var num = 0;
ip = ip.split(".");
num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]);
num = num >>> 0;
return num;
}
//整型解析为IP地址
function _int2iP(num)
{
var str;
var tt = new Array();
tt[0] = (num >>> 24) >>> 0;
tt[1] = ((num << 8) >>> 24) >>> 0;
tt[2] = (num << 16) >>> 24;
tt[3] = (num << 24) >>> 24;
str = String(tt[0]) + "." + String(tt[1]) + "." + String(tt[2]) + "." + String(tt[3]);
return str;
}
以上即为完整的代码实现,有需要的开发者可以参考使用。