子网掩码
子网掩码由4段构成,比如255.255.255.0
每一数字都可以转化为8位二进制数字,一共32位
比如 255.255.255.0 可以化为
11111111 11111111 11111111 00000000
子网掩码如果想合法,则需要满足:二进制数前面都是1,后面都是0。同时每一个数字是不可以大于255的。因为大于255,二进制数就会超过8位。
255.255.255.0就是一个合法的子网掩码,因为其前24位是1,后8位都是0。
255.255.255.32就不是一个合法的子网掩码,其转化成二进制数为
11111111 11111111 11111111 00100000
如果子网掩码不满足前面都是1后面都是0,则不是一个合法的子网掩码。
都是1,或者都是0,同样不合法。
代码如下
public static boolean isMask(String mask){
String[] split = mask.split("\\.");
StringBuilder sb = new StringBuilder();
for (String s : split) {
if(s.trim().equals("")){
return false;
}
int i = Integer.parseInt(s);
//如果有数字大于255,则直接返回false
if (i > 255) {
return false;
}
String binary = Integer.toBinaryString(i);
//如果长度小于8,则在前面补0
while (binary.length() < 8) {