我曾期待找到數百個函數的例子來轉換爲CIDR和NETMASK for javascript,但無法找到任何。Javascript NETMASK和CIDR轉換
我需要在nodejs頁面上爲CIDR和NETMASKS轉換和使用NETCTL設置和檢索計算機的IP地址。
任何簡單的解決方案,使用javascript/nodejs做到這一點?
我曾期待找到數百個函數的例子來轉換爲CIDR和NETMASK for javascript,但無法找到任何。Javascript NETMASK和CIDR轉換
我需要在nodejs頁面上爲CIDR和NETMASKS轉換和使用NETCTL設置和檢索計算機的IP地址。
任何簡單的解決方案,使用javascript/nodejs做到這一點?
鑑於您已經提到使用node.js來實現這一點,我假設您正在尋找一種方法來在JavaScript中運行此服務器端,而不是客戶端。如果這是正確的,netmask npm模塊是否覆蓋了你需要做的事情?
該代碼可以提供一個解決方案:
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;
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
第二cloumn的發生。因此,我設計如下可讀算法:
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)}`)
})