整数与IP地址间的转换

整数与IP地址间的转换

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

import java.util.Scanner;

/**
 * @author lc
 * @version 1.0.0
 * @ClassName HW33.java
 * @Description 整数与IP地址间的转换
 * @createTime 2022年01月19日 13:11:00
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        System.out.println(Integer.valueOf("11101010111011010010010101101000",2));
        while (scanner.hasNextLine()) {

            StringBuffer res = null;

            String s = scanner.nextLine();

            // 如果是ip地址
            if (s.contains(".")) {

                String[] ipArr = s.split("\\.");
                res = new StringBuffer();

                for (String str : ipArr) {
                    // 确保有八位
                    String tp = "00000000" + Long.toBinaryString(Integer.parseInt(str));
                    res.append(tp.substring(tp.length() - 8));
                }
                System.out.println(Long.valueOf(res.toString(), 2));

            } else {
                // 确保有 32 位
                String ipStr = "00000000" + Long.toBinaryString(Long.parseLong(s));
                //截取 32 位
                ipStr = ipStr.substring(ipStr.length() - 32);
                res = new StringBuffer();
                
                while (ipStr.length() >= 8) {
                    
                    String tmp = ipStr.substring(0, 8);
                    res.append(Long.valueOf(tmp, 2));
                    ipStr = ipStr.substring(8);
                    
                    if (ipStr.length() >= 8) {
                        res.append(".");
                    }
                }
                System.out.println(res);
            }
        }
    }
}

全部评论

相关推荐

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