您的位置:首页 > 其它

整数与ip地址间的转换

2017-06-14 12:01 211 查看


题目描述

原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成

一个长整数。

举例:一个ip地址为10.0.3.193

每段数字             相对应的二进制数

10                   00001010

0                    00000000

3                    00000011

193                  11000001

组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。

 

的每段可以看成是一个0-255的整数,需要对IP地址进行校验

 

 

 

输入描述:
输入 
1 输入IP地址
2 输入10进制型的IP地址

输出描述:
输出
1 输出转换成10进制的IP地址
2 输出转换后的IP地址

输入例子:
10.0.3.193
167969729


输出例子:
167773121
10.3.3.193

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String s1 = sc.nextLine();
String s2 = sc.nextLine();
System.out.println(convert1(s1));
System.out.println(convert2(s2));
}
}

private static String convert2(String s2) {
//将十进制转换为二进制,注意:在转换的过程中,参数必须是整形,二进制转换为十进制,则参数可以是字符串
String binaryString = Long.toBinaryString(Long.valueOf(s2));
String tempString = "00000000000000000000000000000000"+binaryString;
binaryString = tempString.substring(tempString.length()-32);

String st1 = binaryString.substring(0,8);
int parseInt1 = Integer.parseInt(st1,2);
String st2 = binaryString.substring(8,16);
int parseInt2 = Integer.parseInt(st2,2);
String st3 = binaryString.substring(16,24);
int parseInt3 = Integer.parseInt(st3,2);
String st4 = binaryString.substring(24,32);
int parseInt4 = Integer.parseInt(st4,2);

String ret = "";
ret = ret + parseInt1+"."+parseInt2+"."+parseInt3+"."+ parseInt4;

return ret;
}

private static long convert1(String s1) {
String[] string = s1.split("\\.");

String re = "";
for(int i = 0; i < string.length;i++){
String binaryString = Integer.toBinaryString(Integer.valueOf(string[i]));
//是为了进行字符串的补0操作。
String temp= "00000000"+binaryString;
binaryString = temp.substring(temp.length()-8); 
re +=binaryString;
}
//将二进制字符串转换为10进制
long parseLong = Long.parseLong(re, 2);
return parseLong;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: