Javascript中IP地址和无符号整数之间的相互转换

原创 2012年03月21日 23:45:48

IP地址转换成无符号整数,javascript中没有无符号数,不过位运算>>>能把整型转换成无符号数值

//IP转成无符号数值
function IP2Num(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 Num2IP(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;
}

//判断是不是合法的子网掩码
function IsMask(mask) 
{
    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])){3}$/;
    if (reg.test(mask) == false)
        return false;
    var i = 0;
    var a = -1;
    var tt = IP2Num(mask);
    var str = tt.toString(2);
    for (i = 0; i < str.length; i++) 
    {
        if (str.charAt(i) == "0")
            a = i;
        if (str.charAt(i) == "1" && a > -1)
            return false;
    }
    return true;
}

//使用示例
function CheckIP( ip, mask, gateway )
{
    var a,b,mk, m, n;
    a = IP2Num(ip);
    b = IP2Num(gateway);
    mk = IP2Num(mask);
    m = (a & mk)>>>0;
    n = (b & mk)>>>0;
    if( m != n )
        return false;
    if( a == m || a == m+~mk )
        return false;
    if( b == m || b == m+~mk )
        return false;
    return true;
}

function Test()
{
    var ip="192.168.0.3";
    var mask = "255.255.255.252";
    var gateway = "192.168.0.1";
    if( CheckIP( ip, mask, gateway) == false )
        alert("您设置的IP地址不合法");
    else
        alert( "非常正确。");
}






版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

字符串与整数、浮点数、无符号整数之间的转换常用函数

atof(将字符串转换成浮点型数) 表头文件 #include 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过前...

字符串与整数、浮点数、无符号整数之间的转换常用函数

有用的函数,感谢发贴那位兄弟。。。。。。 atof(将字符串转换成浮点型数) 表头文件 #include 定义函数 double atof(const char *nptr); 函数说明 atof(...

字符串与整数、浮点数、无符号整数之间的转换常用函数

atof(将字符串转换成浮点型数)     表头文件     #include     定义函数     double atof(const char *nptr); &#...

字符串与整数、浮点数、无符号整数之间的转换 (转载)

atof(将字符串转换成浮点型数)表头文件 #include 定义函数 double atof(const char *nptr);函数说明atof()会扫描参数nptr字符串,跳过前...

无符号十进制整数转换成任意进制数

题目:将一个无符号整数转换为任意 d 进制数( 2 ≤ d ≤ 16 )。 思路:先举个例子。十进制100怎么转换为二进制呢? 记住:d进制的数就是0~(d-1)。 一般都是用辗转相除法(应该是叫这...

ip地址与整数之间的转换

方法1: IP地址转换为整数:IP地址每段可以堪称是8位无符号整数即0~255,把每段拆分成一个二进制形式,组合起来,然后把这个二进制数变啊层一个无符号32位整数。整数转换为IP地址:把这个整数...

宽字符wchar、窄字符char、无符号字符(unsigned char)之间的转换

头文件:    typedef char str_ansi; typedef unsigned char ...

无符号整数

使用移位操作符实现无符号整数位反转

>> 左移 各二进位全部左移若干位,高位丢弃,低位补0 >>  右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)