您的位置:首页 > 其它

华为机试-整数与IP地址之间的转换

2017-03-07 20:26 218 查看
题目描述

原理: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

167773121

输出例子:

167773121

10.3.3.193

代码:

import java.util.Scanner;

public class IpToInteger {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
String Ip=sc.next();
String inter=sc.next();
ipToInteger(Ip);
IntegerToIp(inter);
}

}
public static void ipToInteger(String Ip)
{
String[] ips=Ip.split("\\.");
int sum=0;
long inter=0;
if(ips.length!=4)
{

}
else
{
for(int i=0;i<4;i++)
{   sum=0;
for(int j=0;j<ips[i].length();j++)
{
char ch=ips[i].charAt(j);
if('0'<=ch&&ch<='9')
{
sum=10*sum+ch-'0';

}
}
inter=(inter<<8)+sum;
}

}
System.out.println(inter);
}
public static void IntegerToIp(String sinter)
{
StringBuffer ip=new StringBuffer();
long inter=Long.parseLong(sinter);
int ips[]=new int[4];
for(int i=0;i<4;i++)
{

int sum=(int) (inter&0377);
inter=inter>>8;
ips[3-i]=sum;
}
for(int i=0;i<4;i++)
{
if(i!=3)
System.out.print(ips[i]+".");
else
System.out.println(ips[i]);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  华为 二进制 ip地址