题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
利用与运算和位移运算是一个很好的方法,因为之间写过单片机的程序,所以这道题很快就做出来了。
值得注意的是,int类型表示范围不足,必须要用long类型
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String ip = in.nextLine(); long num = in.nextLong(); System.out.println(decode(ip)); System.out.println(encode(num)); } // 解析ip public static long decode(String ip) { String ipArr[] = ip.split("\\."); return (Long.valueOf(ipArr[0]) << 24) + (Long.valueOf(ipArr[1]) << 16) + (Long.valueOf(ipArr[2]) << 8 )+ Long.valueOf(ipArr[3]); } // 解析ip public static String encode(long num) { return String.valueOf((num & 0xff000000)>>24) + "." + String.valueOf((num & 0x00ff0000)>>16) + "." + String.valueOf((num & 0x0000ff00)>>8) + "." + String.valueOf(num & 0xff); } }