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

整数与IP地址间的转换

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

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    private static final int N = 4;

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String ipVnum = in.next();
            if(ipVnum.contains(".")){
               System.out.println(ip2num(ipVnum));
            }else{
                System.out.println(num2ip(ipVnum));
            }
        }
    }
    private static String ip2num(String result){//256进制转为10进制
        String[] a = result.split("\\.");
        Long num = (long)0;
        for(int i = 0; i < N; i++){
            num = num * 256 + Long.parseLong(a[i]); 
        }
        return  Long.toString(num);
    }
    private static String num2ip(String result){//10进制转为256进制
        Long num = Long.parseLong(result);
        LinkedList<String> result2= new LinkedList<String>();
        for(int i = 0; i < N; i++){
            result2.add(Long.toString(num % 256));
            num /= 256;
        }
        Collections.reverse(result2);
        return String.join(".",result2);
    }
}

全部评论

相关推荐

09-19 14:10
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务