最近遇到了一个项目,将子网掩码转换成多少个 1 位表示。例如: 将 IP : 10.110.133.65 ,子网掩码表示为: 255.255.254.0 表示成 : 10.110.133.65/24
由于子网掩码只能是左边连续为 1 的二进制数组成(128/192/224/240/248/252/254/255),就按照逻辑写了将 子网掩码转换成十进制数表示的。
此程序仅提供参考。
maskToOneP(mask){
let maskArr = mask.split(".")
let result = 0;
for(let index = 0;index < 4;index++){
if(maskArr[index] == 255){
result = result + 8;
continue;
}
let binaryValue = this.binary(maskArr[index])
result = result + binaryValue
if(binaryValue != 8){
break
}
}
return result;
},
binary(number){
let bValue = parseInt(number).toString(2);
let size = bValue.length;
let result = 0;
for(let index =0; index < size;index++){
if(bValue[index] == 0){
break
}
result = result + 1
}
return result;
}