使用js写一个函数,传入ip地址以及子网掩码两个参数,判断传入的ipv4地址的类别与子网掩码是否为该ip地址的子网掩码
时间: 2023-04-04 10:00:37 浏览: 147
好的,这是一个关于编程的问题。以下是一个使用 JavaScript 编写的函数,可以判断传入的 IPv4 地址的类别,并检查子网掩码是否为该 IP 地址的子网掩码:
```javascript
function checkIP(ip, mask) {
// 将 IP 地址和子网掩码转换为二进制数组
const ipArr = ip.split('.').map(Number).map(dec2bin);
const maskArr = mask.split('.').map(Number).map(dec2bin);
// 判断 IP 地址的类别
const firstOctet = parseInt(ipArr[], 2);
let ipClass;
if (firstOctet >= 1 && firstOctet <= 126) {
ipClass = 'A';
} else if (firstOctet >= 128 && firstOctet <= 191) {
ipClass = 'B';
} else if (firstOctet >= 192 && firstOctet <= 223) {
ipClass = 'C';
} else if (firstOctet >= 224 && firstOctet <= 239) {
ipClass = 'D';
} else if (firstOctet >= 240 && firstOctet <= 255) {
ipClass = 'E';
}
// 检查子网掩码是否为该 IP 地址的子网掩码
const subnetMask = maskArr.join('');
const ipBinary = ipArr.join('');
const networkAddress = ipBinary.slice(, subnetMask.indexOf('')) + ''.repeat(subnetMask.length - subnetMask.indexOf(''));
return {
ipClass,
isSubnetMask: subnetMask === networkAddress.slice(, subnetMask.length),
};
}
function dec2bin(dec) {
return (dec >>> ).toString(2).padStart(8, '');
}
```
你可以将 IP 地址和子网掩码作为参数传递给 `checkIP` 函数,它将返回一个对象,其中包含 IP 地址的类别和子网掩码是否为该 IP 地址的子网掩码。
阅读全文