public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s = sc.next();
if(s.contains(".")){
System.out.println(ipnum(s));
}else{
System.out.println(numip(Long.parseLong(s)));
}
}
}
public static long ipnum(String ip){
String[] str=ip.split("\\.");//记住.需要转义字符
StringBuilder res=new StringBuilder();
for(int i=0;i<4;i++){
str[i]=Integer.toBinaryString(Integer.parseInt(str[i]));//记住str[i]此时仍是字符串数字10进制,需要转化为,数字类型的10进制,然后再转化为二进制
while(str[i].length()<8){
str[i]="0"+str[i];
}
res.append(str[i]);
}
return Long.parseLong(res.toString(),2);
}
public static String numip(long num){
String str=Long.toBinaryString(num);
while(str.length()<32){
str="0"+str;
}
String[] res=new String[4];
for(int i=0;i<4;i++){
res[i]=Integer.parseInt(str.substring(i*8,i*8+8),2)+"";//二进制8位取完了,需要转化为10进制
}
return String.join(".",res);
}
HJ33 整数与IP地址间的转换(java详解)
最新推荐文章于 2023-07-31 15:10:13 发布