题解 | #整数与IP地址间的转换#

整数与IP地址间的转换

https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea

import java.util.*;
// 最简单的思路,按题目意思进行转换,不需要高深的技巧,唯一要注意的是整数不止int 还有Long
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
        String[] ips = line.split("\\.");

        StringBuilder sb = new StringBuilder();
        for(String ip : ips){   

            String br = Integer.toBinaryString(Integer.valueOf(ip));
            String bf = "";
            if(br.length()<8){
                bf = "000000000".substring(0,8-br.length());
            }

            sb.append(bf).append(br);

        }
       
        System.out.println(Long.parseLong(sb.toString(),2));


        Long ipNum = Long.valueOf(in.next());
        
        String br = Long.toBinaryString(ipNum);
      
        StringBuilder temp = new StringBuilder();
        int idx =0 ;
        List<Integer> list = new ArrayList();
        for(int i = br.length()-1;i>-1;i--){
            idx++;
            temp.append(br.charAt(i));
            if(idx==8){
                idx=0;
                list.add(Integer.parseInt(temp.reverse().toString(),2)); 
                 temp = new StringBuilder();   
            }   
        }
        if(temp.length()!=0){
           
           String s =    "000000000".substring(0,8-temp.length())+temp.reverse().toString();
           list.add(Integer.parseInt(s,2)); 
        }

        for(int i  = list.size()-1;i>-1;i--){
            System.out.print(list.get(i));
            if(i!=0){
                System.out.print(".");
            }
        }




    }
}

全部评论

相关推荐

01-21 12:26
暨南大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务