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

整数与IP地址间的转换

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

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            String s1 = scan.nextLine();
            String s2 = scan.nextLine();
            solution1(s1);
            solution2(s2);
        }
    }
    public static void solution1(String s) {
        String[] arr = s.split("\\.");
        StringBuffer sb = new StringBuffer();
        for (String s1 : arr) {
            int n = Integer.parseInt(s1);
            String str = Integer.toBinaryString(n);
            StringBuffer sb1 = new StringBuffer();
            int dif = 8 - str.length();
            while (dif > 0) {
                sb.append(0);
                dif--;
            }
            sb.append(str);
        }
        long p = Long.parseLong(sb.toString(), 2);
        System.out.println(p);
    }
    public static void solution2(String s) {
        String binary = Long.toBinaryString(Long.parseLong(s));
        StringBuffer sb = new StringBuffer();
        int dif = 32 - binary.length();
        while (dif > 0) {
            sb.append(0);
            dif--;
        }
        sb.append(binary);
        binary = sb.toString();
        String s1 = binary.substring(0, 8);
        String s2 = binary.substring(8, 16);
        String s3 = binary.substring(16, 24);
        String s4 = binary.substring(24);
        int n1 = Integer.parseInt(s1, 2);
        int n2 = Integer.parseInt(s2, 2);
        int n3 = Integer.parseInt(s3, 2);
        int n4 = Integer.parseInt(s4, 2);
        StringBuffer res = new StringBuffer();
        res.append(n1); 
        res.append(".");
        res.append(n2); 
        res.append(".");
        res.append(n3); 
        res.append(".");
        res.append(n4); 
        System.out.println(res.toString());
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务