7-1 IP地址转换
描述:
一个IP地址是用四个字节(每个字节8位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。
输入数据要求:
必须为二进制数,即只能输入0或者1
长度必须是32位
违背以上规则程序直接输出Wrong Format
输入格式:
在一行中给出32位二进制字符串。
输出格式:
在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。
输入样例:
11000110101001000011011011011001
输出样例:
198.164.54.217
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
String k=new String();
k=s.nextLine();
char[] a=new char[32];
int p=1;
for(int i=0;i<k.length();i++)
{
//未输入数据测试 输入非法数字、字符测试
if(k.trim().isEmpty()||(k.charAt(i)!='0'&&k.charAt(i)!='1'))
{
p=0;//如果有除 1 0 以外的
}
}
if(k.length()==32&&p==1)//32个都是 0或1
{
for(int i=0;i<k.length();i++)
{
a[i]=k.charAt(i);//32个字符
}
//第一组
int sum1=0;
for(int i=0;i<8;i++)
{
if(a[i]=='1')
{
sum1=sum1+(int)Math.pow(2,7-i);
}
}
//第二组
int sum2=0;
for(int i=8;i<16;i++)
{
if(a[i]=='1')
{
sum2=sum2+(int)Math.pow(2,15-i);
}
}
//第三组
int sum3=0;
for(int i=16;i<24;i++)
{
if(a[i]=='1')
{
sum3=sum3+(int)Math.pow(2,23-i);
}
}
//第四组
int sum4=0;
for(int i=24;i<32;i++)
{
if(a[i]=='1')
{
sum4=sum4+(int)Math.pow(2,31-i);
}
}
System.out.println(sum1+"."+sum2+"."+sum3+"."+sum4);
}
else
System.out.println("Wrong Format");
}
}