我希望找到数百个用于CIDR和NETMASK for javascript之间相互转换的函数示例,但找不到任何一个。
我需要在nodejs页面上转换CIDR和NETMASKS,该页面使用NETCTL设置和检索机器的IP地址。
使用javascript / nodejs有什么简单的解决方案吗?
发布于 2015-09-08 19:11:39
这段代码可以提供一个解决方案:
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;发布于 2019-07-23 17:29:20
下面是一个不检查网络掩码是否有效的方法:
const netmaskToCidr = n => n
.split('.')
.reduce((c, o) => c - Math.log2(256 - +o), 32)发布于 2017-03-24 11:41:21
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。因此,我设计了一个可读的算法,如下所示:
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)}`)
})
https://stackoverflow.com/questions/19532210
复制相似问题