IP地址是32位的。
例如:01110000000011110101101011000011
好记吗?好写吗?所以把它均分成四段,每段8个,以点号分隔
例如:01110000. 00001111 .01011010 .11000011
这样还是不好记不好写,所以每段里面的二进制数转换成对应的十进制。
例如:112.15.90.195
这称为“点分十进制”表示方法。
点分十进制转二进制:
public String convert(String ip){
Long rs = 0L;
String str[] = ip.split("\\."); //.是转义字符 需要用\\.代替
if(str.length!=4) return "输入格式错误";
for(int k = 0 ; k < str.length ; k++){
int bit = 24-k*8;
try{
if(Integer.parseInt(str[k])<0 ||Integer.parseInt(str[k])>255) return "输入格式错误";
}catch (NumberFormatException e){
return "输入格式错误";
}
rs = rs + Long.parseLong(str[k])<<bit;
}
return Long.toBinaryString(rs);
}