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

整数与IP地址间的转换

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

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String s = scanner.nextLine();
            String s1 = scanner.nextLine();
            System.out.println(Main.toten(s));
            System.out.println(Main.toip(s1));
        }
    }
    public static long toten(String s){
        String[] split = s.split("\\.");
        String longs="";
        for (int i = 0; i < split.length; i++) {
            if (Integer.parseInt(split[i])<0||Integer.parseInt(split[i])>255){
                break;
            }else {
                String s1 = Integer.toString(Integer.valueOf(split[i]), 2);
                HashMap<Integer, Integer> hm = new HashMap<>();
                hm.put(0,s1.length());
                if (s1.length()<8){
                    for (int j = 0; j <8-hm.get(0); j++) {
                        s1="0"+s1;
                    }
                }
                longs=longs+s1;
            }
        }
        Long i1 = Long.parseLong(longs, 2);
        return i1;
    }
    public static String toip(String s){
        Long it = Long.valueOf(s);
        String string = Long.toString(it, 2);
        HashMap<Integer, Integer> hs = new HashMap<>();
        hs.put(0,string.length());
        if (string.length()<32){
            for (int i = 0; i <32-hs.get(0); i++) {
                string="0"+string;
            }
        }
//        System.out.println(string);
        ArrayList<String> st = new ArrayList<>();
        for (int i = 0; i <string.length(); i=i+8) {
            String substring = string.substring(i, i+8);
            st.add(substring);
        }
//        System.out.println(st);
        String su="";
        for (int i = 0; i <4; i++) {
            int i1 = Integer.parseInt(st.get(i), 2);
            String s1 = String.valueOf(i1);
            if (i<3) {
                su = su + s1 + ".";
            }else {
                su = su + s1;
            }
        }
        return su;
    }
}

全部评论

相关推荐

起名字真难233:人家只有找猴子的预算,来个齐天大圣他们驾驭不住呀😂😂
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
02-12 10:05
小米集团 算法工程师 28.0k*15.0
泡沫灬一触即破:楼上那个看来是看人拿高薪,自己又不如意搁这泄愤呢是吧,看你过往评论很难不怀疑你的精神状态
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务