整数与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);
            }
        }
    }
}

全部评论

相关推荐

每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
那一天的Java_Java起来:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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