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( "非常正确。");
}






IP地址与无符号整数值相互转换

方法1: IP地址转换为整数:比如"192.168.1.254",以点为分割,将192 168 1 254保存在一个int a[4]数组里, 然后通过unsigned int nResult = ...

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

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

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

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

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

有用的函数,感谢发贴那位兄弟。。。。。。 atof(将字符串转换成浮点型数) 表头文件 #include 定义函数 double atof(const char *nptr); 函数说明 atof(...
  • palyrat
  • palyrat
  • 2011年08月05日 17:18
  • 72

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

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

IP地址字符串转无符号整型uint

 考虑到转换的过程是处理数字和点,可以使用自动机的思想; 自动机的思想就是整一个状态-转移表,根据输入自动判断, 说白了就是正则表达式,在同一个状态下,不同的输入会转到不同的状态上去。 对...
  • wwj_ff
  • wwj_ff
  • 2015年09月01日 11:26
  • 628

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

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

C# IP地址与整数之间的转换

IP地址与整数之间的转换 1、IP地址转换为整数 原理:IP地址每段可以看成是8位无符号整数即0-255,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个无符号的32位整数...

ip地址与整数之间的转换

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

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

头文件:    typedef char str_ansi; typedef unsigned char ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Javascript中IP地址和无符号整数之间的相互转换
举报原因:
原因补充:

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