最近遇到一个很有意思的点,于是就记录下来。

CIDR一般是由IP地址和子网掩码组成,即 IP地址/子网掩码 格式。

子网掩码表示前面地址中的前多少位,为网络位,后面部分代表主机部分。例如:192.168.12.13/18,把192.168.12.13中的 每一位转为二进制后是  “11000000  10101000  00001100  00001101”,其中“/18”中的18表示“11000000  10101000  00001100  00001101”的前18位(共32位),剩余部分为主机部分。

直接上方法,本方法不支持网络位全为 0的CIDR,建议加上过滤条件:

getCIDRMessage(cidrValue) {
let value =cidrValue.split('/');
//校验IPv4格式
let ipv4test = /(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))/;
if (!ipv4test.test(value[0])) {
return { key: 'IPv4格式不正确' }
} let val = value[0].split('.');
const sub = 32 - value[1];
let a11 = (parseInt(val[0]) << 24) | (parseInt(val[1]) << 16) | (parseInt(val[2]) << 8) | (parseInt(val[3]) << 0);
console.log(value + '--> a11 :--->' + a11); a11 = a11 >> sub << sub;
const ipSart = a11;
const ipEnd = a11 + (1 << sub) - 1; //开始地址
let rightStartIp = (ipSart >> 24 & 255) + '.' + (ipSart >> 16 & 255) + '.' + (ipSart >> 8 & 255) + '.' + (ipSart >>> 0 & 255);
//结束地址
let rightEndIp = (ipEnd >> 24 & 255) + '.' + (ipEnd >> 16 & 255) + '.' + (ipEnd >> 8 & 255) + '.' + (ipEnd >>> 0 & 255); //现在想要手动设定一个地址范围,比如只想要45个地址
let ipRangeByHand = (a11 >>> 0 ) + 45;
let setRange = (ipRangeByHand >>> 24) + "." + (ipRangeByHand >> 16 & 0xFF) + "." + (ipRangeByHand >> 8 & 0xFF) + "." + (ipRangeByHand >> 0 & 0xFF); console.log('rightStartIp :--->' + rightStartIp);
console.log('rightEndIp :--->' + rightEndIp);
console.log('setRange :--->' + setRange);
}

例如,挡在输入框内输入“3.3.3.3/24”,其地址范围经过计算是“3.3.3.0-----3.3.3.255”。结果如 下面截图:

如有问题,请指出。本文到这里就暂时结束了,转载请注明出处。谢谢~~~~

好好做人,认真生活。

IPv4:根据CIDR显示地址范围的更多相关文章

  1. IPv4套接字地址结构

    一.IPv4套接字地址结构(POSIX定义) (1)长度字段sin_len是为增加对OSI协议的支持而随4.3BSD-Reno添加的:并不是所有的厂家都支持套接字地址结构的长度字段,而且POSIX规范 ...

  2. Ipv4和Ipv6的地址字符串长度

    SOURCE   IPv4采用32位地址长度      xxx.xxx.xxx.xxx  15max(string) IPv6采用128位地址长度   估计是  xxx.xxx.xxx.xxx. xx ...

  3. 百度地图小Demo---获取当前地址以及拖拽显示地址

    1.效果图 2.源码 主要使用百度地图的JavaScript API文件,以及一个JQuery文件. <!doctype html> <html lang="en" ...

  4. 套接字编程简介: IPV4套接字地址结构/ 通用套接字地址结构/ IPV6套接字地址结构/新通用套接字地址结构

    IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet/in.h>头文件中. struct in_addr { in_addr_t ...

  5. IPv6(诞生原因、数据报格式、与IPv4的不同、地址表现形式、基本地址类型、IPv6与IPv4的过渡策略)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105297642 学习课程:<2019王道考研计算机网络> 学习目的 ...

  6. IPV4和IPV6 特殊地址块

    https://en.wikipedia.org/wiki/Reserved_IP_addresses https://blog.csdn.net/tty521/article/details/725 ...

  7. springMVC报404,没有显示地址

    正常报404会显示你的错误地址信息,而针对本问题 如果你使用的是springMVC框架,这就代表你的请求被拦截了

  8. ipv4组播预留地址

    列表如下: 224.0.0.0 基准地址(保留) 224.0.0.1 所有主机的地址 224.0.0.2 所有组播路由器的地址 224.0.0.3 不分配 224.0.0.4 dvmrp 路由器 22 ...

  9. [codewars] - int32 to IPv4 二进制十进制 ip地址转换

    原题 https://www.codewars.com/kata/int32-to-ipv4/train/java Take the following IPv4 address: 128.32.10 ...

  10. IOS真机Profile时调用树中的对象只是显示地址,没有显示symbol name

    解决问题的办法: 1.确认工程设置中的Scheme,profile选项对应的是debug版本还是release版本 2.确认工程设置中debug版本或者release版本是否生成了符号表 " ...

随机推荐

  1. Windows安装SSH服务器

    1.打开Win的设置并在设置中找到应用 2.在应用中依次选择应用和功能 可选功能 3.在可选功能中选择添加功能 (OpenSSH客户端默认已存在) 选中OpenSSH服务器后点击下方的安装 4.快捷键 ...

  2. MarkdownQuote:简化 Markdown 中的代码引用!

    MarkdownQuote:简化 Markdown 中的代码引用! 这是 SourceCodeTrace 项目之一,通过在 IDE 中提供一种便捷的方式,快速复制包含代码来源 Markdown 代码块 ...

  3. HTML的总结与回顾(思维导图

  4. 使用gulp.js打包layuiAdmin

    安装nvm 在nvm目录下,找到settings.txt,追加以下两行加速nvm(淘宝镜像)node_mirror: https://npm.taobao.org/mirrors/node/npm_m ...

  5. 谈谈 Kafka 的幂等性 Producer

    使用消息队列,我们肯定希望不丢消息,也就是消息队列组件,需要保证消息的可靠交付.消息交付的可靠性保障,有以下三种承诺: 最多一次(at most once):消息可能会丢失,但绝不会被重复发送. 至少 ...

  6. sqli-labs全通关payload

    less-1: less-2: less-3: less-4: less-5: less-6: less-7: outfile,dumpfile,load_file函数的用法如下所示: less-8: ...

  7. C#中多线程的用法

    1.在C#中使用多线程可以使用Thread 代码例子: public class ThreadExample { public static void ThreadProc() { for (int ...

  8. 【路由器】Breed 介绍、刷入和使用

    目录 介绍 文件说明 刷入 Breed 通过 Breed 刷机 其他功能 参考资料 介绍 Breed 是国内个人 hackpascal 开发的闭源 Bootloader,也被称为"不死鸟&q ...

  9. cs50ai0----search

    cs50ai0-------Search cs50ai0-------Search 基础知识 课后题目 代码实践 学习链接 总结 基础知识 (1) search problem 上图是搜索问题的一般形 ...

  10. Ubuntu Linux 更换国内源

    Ubuntu的官方源对于国内用户来说是比较慢的,可以将它的源换成国内的源,用起来就快很多了. # Ubuntu server 环境 ubuntu@ubuntu:~$ sudo su - [ sudo ...