整数与IP之间的转化
程序员文章站
2023-12-26 16:24:22
...
题目描述
原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成
一个长整数。
举例:一个ip地址为10.0.3.193
每段数字 相对应的二进制数
10 00001010
0 00000000
3 00000011
193 11000001
组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。
解答:
做一个转化:
import java.util.*;
import java.io.*;
public class Main {
public static void Change1(String str) {
String[] data1 = str.split("\\.");
data1[0] = Integer.toBinaryString(Integer.parseInt(data1[0]));
data1[1] = Integer.toBinaryString(Integer.parseInt(data1[1]));
data1[2] = Integer.toBinaryString(Integer.parseInt(data1[2]));
data1[3] = Integer.toBinaryString(Integer.parseInt(data1[3]));
while(data1[0].length()<8) data1[0] = "0"+data1[0];
while(data1[1].length()<8) data1[1] = "0"+data1[1];
while(data1[2].length()<8) data1[2] = "0"+data1[2];
while(data1[3].length()<8) data1[3] = "0"+data1[3];
long sum = 0;
for(int i=0;i<data1.length;i++) {
for(int j=0;j<data1[0].length();j++) {
sum = sum*2+(data1[i].charAt(j)-'0');
}
}
System.out.println(sum);
}
public static void Change2(String str) {
long data2 = Long.parseLong(str);
String bindata2 = Long.toBinaryString(data2);
String[] data = new String[4];
data[0] = bindata2.substring(0,bindata2.length()-3*8);
data[1] = bindata2.substring(data[0].length(),data[0].length()+8);
data[2] = bindata2.substring(data[0].length()+data[1].length(),data[0].length()+data[1].length()+8);
data[3] = bindata2.substring(bindata2.length()-8,bindata2.length());
System.out.print(Integer.valueOf(data[0],2)+".");
System.out.print(Integer.valueOf(data[1],2)+".");
System.out.print(Integer.valueOf(data[2],2)+".");
System.out.println(Integer.valueOf(data[3],2));
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while((str=br.readLine())!=null) {
Change1(str);
str=br.readLine();
Change2(str);
}
}
}
推荐阅读
-
整数与IP之间的转化
-
SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试
-
关于对象与引用之间的一些基本概念
-
探讨:array2xml和xml2array以及xml与array的互相转化
-
引用 js在IE与FF之间的区别详细解析_javascript技巧
-
PHP、Java、C#实现URI参数签名算法,确保应用与REST服务器之间的
-
Java web Filter, Strurs2 Interceptor 和 SpringMVC Interceptor 三者之间的联系与区别
-
IStream与TStream之间的相互转换_PHP
-
PHP的时间戳与具体时间转化的简单实现,php具体时间转化
-
ActiveX控件与Javascript之间的交互示例_javascript技巧