整数与ip地址间的转换


/*
    整数与ip地址间的转换
    
      10.0.3.193
      每一段拆分转化为二进制数   00001010  00000000  00000011  11000001
      然后转换为十进制   167773121
      
      
      要求:1、输入ip地址
           2、输入10进制的ip地址
           
           输出10进制的ip地址
           输出转换后的ip地址
*/

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc =new Scanner(System.in);
         while(sc.hasNext()){
            String ip=sc.nextLine();
            String p=sc.nextLine();
            System.out.println(IptoTen(ip));
            TentoIp(p);
        }
    }
     private static void TentoIp(String p) {
        long temp=Long.parseLong(p);
        String ip=Long.toBinaryString(temp);
         
        StringBuilder sb=new StringBuilder();
        if(ip.length()<32){
            for(int i=0;i<(32-ip.length());i++){
                sb.append(0);
            }
            sb.append(ip);
        }else if(ip.length()==32){
            sb.append(ip);
        }
         
        for(int i=0;i<sb.length()-8;i=i+8){
             
            System.out.print(Integer.parseInt(sb.substring(i,i+8),2)+".");
        }
         
        System.out.println(Integer.parseInt(sb.substring(sb.length()-8,sb.length()),2));
         
    }
 
    private static long IptoTen(String ip) {
        String[] arr=ip.split("\\.");
        long n=Long.parseLong(arr[0]);
         
        for(int i=1;i<arr.length;i++){
            n=n<<8;
            n=n+Long.parseLong(arr[i]);
        }
         
        return n;
    }
   
   
}

发布了120 篇原创文章 · 获赞 37 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Zhengxinyu666/article/details/98853120