JS中IP地址与整数相互转换的实现代码

主要用于在js判断用户输入的一个ip段是否合法,如:192.168.1.11-192.168.1.134

实现代码一:

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;
}

以上就是完整代码,需要的朋友可以参考一下。

(0)

相关推荐

  • JS中IP地址与整数相互转换的实现代码

    主要用于在js判断用户输入的一个ip段是否合法,如:192.168.1.11-192.168.1.134 实现代码一: 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 +=

  • js针对ip地址、子网掩码、网关的逻辑性判断

    因为要做静态地址配置的js校验,找了好多资料发现网上都是关于ip,mask的有效性检查,没有ip,submask,gateway的逻辑性判断,自己写下代码供需要的人参考. 普及下网关地址知识: 第一点:进行与运算1与1得1,1与0为0,0与0为0.首先把ip和子网掩码展开 10.70.64.223        00001010 .01000110.01000000.11011111 255.255.255.0   111111111.11111111.11111111.00000000 网段就

  • python IP地址转整数

    背景 今天有人问我 "为什么数据库中有人推荐使用 int 类型来保存 IP 地址?".现在(2020年)来看这个东西已经有点过时了,一方面是磁盘空间不在那么贵,另一方面是 IPv6 与这条法则不兼容. 下面我们就来看一下把 IPv4 地址转换成整数的原理和收益各是什么. 转换的原理 一个 IPv4 类的地址共分为四个部分 0.0.0.0 然而每一个部分的取值范围都在 0 ~ 255:也就是说每一个部分都可以用一个字节来保存,总共写个字节就够了,4 个字节不就是 int 吗? 第一步 把

  • IP地址与整数之间的转换实现代码(asp.net)

    知识点:一个二进制数,按位左移n位,就是把该数的值乘以2的n次方 二进制除二即右移一位 1.IP地址转换为整数 原理:IP地址每段可以看成是8位无符号整数即0-255,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个无符号32为整数. 举例:一个ip地址为10.0.3.193 每段数字 相对应的二进制数 10 00001010 0 00000000 3 00000011 193 11000001 组合起来即为:00001010 00000000 00000011 1100000

  • PHP中IP地址与整型数字互相转换详解

    IP转换成整型存储是数据库优化一大趋势,不少人目前存储IP时还在使用字符串类型存储,字符串索引比整型索引消耗资源很多,特别是表中数据量大的时候,以及求查询某一个ip段的数据,今天说的ip是指ip4,ip6不在本文范围内. 系统函数ip2long与long2ip PHP中有内置函数ip2long可以将ip地址转换整型. 复制代码 代码如下: $ip = '210.110.11.49'; echo ip2long($ip); 输出: 复制代码 代码如下: -764540111 输出的整型有负号是因为

  • js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)

    js中小数向上取整数,向下取整数,四舍五入取整数的实现. 1.ceil()  向上-------------ceil英文意思是:天花板-----------就是在上 2.floor() 向下-------------ceil英文意思是:地面-----------就是在下 3.round() 四舍五入-------------ceil英文意思是:大约-----------就是附近 直接看下面的例子,结果一目了然.代码下面的是对应的打印结果. Math.floor(3/4) 0 Math.floor

  • js获取IP地址的方法小结

    1,js取得IP地址的方法一 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script type="text/<A class=infotextkey href="http://www.jb51.net/" target=_blank>javascript</A>"> document.write(retur

  • C# IP地址与整数之间转换的具体方法

    IP地址与整数之间的转换 1.IP地址转换为整数 原理:IP地址每段可以看成是8位无符号整数即0-255,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个无符号的32位整数. 举例:一个ip地址为10.0.3.193 每段数字 相对应的二进制数10 000010100 000000003 00000011193 11000001组合起来即为:00001010 00000000 00000011 11000001,转换为10进制就是:167773121,即该IP地址转换后的数字就是

  • Java编程IP地址和数字相互转换代码示例

    最近才知道,将ip地址转换成十进制.八进制.十六进制同样可以访问网站. IP转为数字(第二种算法.用左移.按位或实现.效率更高.): public long ipToLong(String ipAddress) { long result = 0; String[] ipAddressInArray = ipAddress.split("\\."); for (int i = 3; i >= 0; i--) { long ip = Long.parseLong(ipAddress

  • Python中IP地址处理IPy模块的方法

    安装 先下载源码,地址:ps://pypi.python.org/pypi/IPy/">https://pypi.python.org/pypi/IPy/ ,然后解压后使用命令python setup.py install安装. 使用 1.显示IP类型 >>> IP('192.168.1.1').version() 4 >>> IP('::1').version() 6 类似如上所示,通过version方法可以的判断输入的IP是IPv4还是IPv6 .

随机推荐