IP地址与整数的互转(Java语言描述)

任务要求

完成IP地址与对应的整数的相互转化。

思路

IP格式:
[0-255].[0-255].[0-255].[0-255]

256 = 28,每一段是8位。

所以IP→Integer的话其实就是把IP按照小数点分隔开,由于".“匹配的是任意字符,所以要用”\\.",然后array[0]转成long型并左移24位,array[1]转成long并左移16位,array[2]转成long并左移8位,array[3]转成long,把四个long数值相加,就是IP对应的int值了。

Integer→IP的话其实就是把long整数改成二进制格式,再分割子串,这个要从右往左,先切substring(length-8, length),再切substring(length-16, length-8),然后切substring(length-24, length-16),剩下的substring(0, length-24)在最高位。

IP地址→Integer

import java.util.Scanner;

public class IpToInteger {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] info = scanner.nextLine().split("\\.");
        scanner.close();
        long num1 = Long.parseLong(info[0])<<24;
        long num2 = Long.parseLong(info[1])<<16;
        long num3 = Long.parseLong(info[2])<<8;
        System.out.println(num1+num2+num3+Long.parseLong(info[3]));
    }
}

Integer→IP地址

import java.util.Scanner;

public class IntegerToIp {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String num = Long.toString(scanner.nextLong(), 2);
        int length = num.length();
        System.out.println(Integer.parseInt(num.substring(0, length-24), 2) + "." +
                Integer.parseInt(num.substring(length-24, length-16), 2) + "." +
                Integer.parseInt(num.substring(length-16, length-8), 2) + "." +
                Integer.parseInt(num.substring(length-8, length), 2));
        scanner.close();
    }
}
发布了484 篇原创文章 · 获赞 976 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104257080