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

整数与IP地址间的转换

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

使用二进制移位进行解题:
问题:
期间遇到分割符时应该用"//." 不能用"."
后面是因为整型无法支持32位数值,改成long
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            // 
            String ipString = in.next();
            String decimalStr = in.next();
            String[] ipStrArr = ipString.split("\\.");
            long decimalnum = 0;
            int N = ipStrArr.length;
            int index = N-1;
            for(int i = 0;i<N;i++){
                long val = Long.valueOf(ipStrArr[i]);
                decimalnum = decimalnum + (val << (8*index));
                index--;
            }
            System.out.println(decimalnum);

            long ipIntValue = Long.valueOf(decimalStr);
            String ipStr = "";
            for(int i = 3; i>=0 ;i--){
                long v1 = ipIntValue / (1 << (8*i));
                ipIntValue = ipIntValue % (1 << (8*i));
                ipStr = ipStr +"." + v1 ;
            }
            System.out.println(ipStr.substring(1));


        }
    }
}


全部评论

相关推荐

11-11 14:21
西京学院 C++
Java抽象练习生:教育背景放最前面,不要耍小聪明
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务