4039:IP地址转换
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
IP地址总是由4个0-255的数字以"."隔开的形式来显示给用户,例如192.168.0.1。在计算机中,一个IP地址用4字节来依次存储其从右到左的4个数字部分,每个字节(8比特)以2进制的形式存储相应的IP地址数字,请你实现一个从IP地址的显示格式到计算机存储格式的转换。
输入
- 每行输入一个IP地址,如果输入为-1,结束输入 输出
- 每行输出一个IP地址在计算机存储中以二进制表示的4字节内容 样例输入
-
192.168.0.1 255.255.0.0 1.0.0.1 -1
样例输出
-
11000000101010000000000000000001 11111111111111110000000000000000 00000001000000000000000000000001
-
#include<stdio.h> #include<string.h> int main(){ char str[25]; while(scanf("%s",str)!=EOF&&strcmp(str,"-1")!=0){ int n=strlen(str); int j=0,t=0,k=1; int s[5]; for(int i=n-1;i>=0;i--){ if(str[i]=='.'){ s[j]=t; j++; k=1; t=0; } else{ t+=(str[i]-'0')*k; k*=10; if(i==0){ s[j]=t; j++; k=1; t=0; } } } //转2进制,补齐八位 for(int i=j-1;i>=0;i--){ int r[10];int l=0; for(int nt=0;nt<10;nt++) r[nt]=0; while(s[i]!=0){ r[l++]=s[i]%2; s[i]/=2; } for(int ii=7;ii>=0;ii--){ printf("%d",r[ii]); } } printf("\n"); } return 0; }