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

整数与IP地址间的转换

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

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s1 = scanner.next();
        String s2 = scanner.next();
        System.out.println(ipv4ToInt(s1));
        System.out.println(intToIpv4(s2));
    }
    public static long ipv4ToInt(String ipv4) {
        String[] sArray = ipv4.split("\\.");
        String result = "";
        for (int i = 0; i < 4; i++) {
            result = result + String.format("%08d",
                                            Integer.parseInt(Integer.toBinaryString(Integer.parseInt(sArray[i]))));
        }
        return Long.parseLong(result, 2);
    }

    public static String intToIpv4(String ipv4Int) {
        String s = Long.toBinaryString(Long.parseLong(ipv4Int));
        int len = s.length();
        String result = "." + Integer.parseInt(s.substring(len - 8, len), 2);
        result = "." + Integer.parseInt(s.substring(len - 16, len - 8), 2) + result;
        result = "." + Integer.parseInt(s.substring(len - 24, len - 16), 2) + result;
        result = Integer.parseInt(s.substring(0, len - 24), 2) + result;
        return result;
    }
}
全部评论

相关推荐

07-30 11:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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