首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript NETMASK和CIDR转换

Javascript NETMASK和CIDR转换
EN

Stack Overflow用户
提问于 2013-10-23 11:23:52
回答 5查看 7.3K关注 0票数 2

我希望找到数百个用于CIDR和NETMASK for javascript之间相互转换的函数示例,但找不到任何一个。

我需要在nodejs页面上转换CIDR和NETMASKS,该页面使用NETCTL设置和检索机器的IP地址。

使用javascript / nodejs有什么简单的解决方案吗?

EN

回答 5

Stack Overflow用户

发布于 2015-09-08 19:11:39

这段代码可以提供一个解决方案:

代码语言:javascript
复制
var mask = "255.255.248.0";
var maskNodes = mask.match(/(\d+)/g);
var cidr = 0;
for(var i in maskNodes)
{
  cidr += (((maskNodes[i] >>> 0).toString(2)).match(/1/g) || []).length;
}
return cidr;
票数 4
EN

Stack Overflow用户

发布于 2019-07-23 17:29:20

下面是一个不检查网络掩码是否有效的方法:

代码语言:javascript
复制
const netmaskToCidr = n => n
  .split('.')
  .reduce((c, o) => c - Math.log2(256 - +o), 32)
票数 4
EN

Stack Overflow用户

发布于 2017-03-24 11:41:21

代码语言:javascript
复制
    NETMASK                        BINARY               CIDR
255.255.248.0       11111111.11111111.11111000.00000000 /21
255.255.0.0         11111111.11111111.00000000.00000000 /16 
255.192.0.0         11111111.11000000.00000000.00000000 /10

这是如何计算CIDR..因此,它是在第二个云中出现的1。因此,我设计了一个可读的算法,如下所示:

代码语言:javascript
复制
const masks = ['255.255.255.224', '255.255.192.0', '255.0.0.0']; 
/**
* Count char in string
*/
const countCharOccurences = (string , char) => string.split(char).length - 1;

const decimalToBinary = (dec) => (dec >>> 0).toString(2);
const getNetMaskParts = (nmask) => nmask.split('.').map(Number);
const netmask2CIDR = (netmask) => 
   countCharOccurences(
     getNetMaskParts(netmask)
      .map(part => decimalToBinary(part))
      .join(''),
    '1'   
  );    


masks.forEach((mask) => {
  console.log(`Netmask =${mask}, CIDR = ${netmask2CIDR(mask)}`)
})

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19532210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档