题目描述:整数与IP地址间的转换_牛客题霸_牛客网
这道题比较简单,直接展示代码
方法一:
#include <stdio.h>
#include <math.h>
int main()
{
int arr[4],i,j,p[32]={0};
long long ip1,ip2=0; //刚开始用的int类型,发现不够用,会出错
scanf("%d.%d.%d.%d",&arr[3],&arr[2],&arr[1],&arr[0]);
scanf("%ld",&ip1);
for(i=0;i<4;i++)
{
ip2+=arr[i]*pow(16,2*i);
}
i=31;
while(ip1>0)
{
p[i--]=ip1%2;
ip1/=2;
}
for(i=0;i<4;i++)
{
arr[i]=0;
for(j=8*i;j<8*i+8;j++)
{
arr[i]*=2;
arr[i]+=p[j];
}
}
printf("%ld\n%d.%d.%d.%d\n",ip2,arr[0],arr[1],arr[2],arr[3]);
return 0;
}
方法二:
#include <stdio.h>
int main()
{
int arr[4];
long long ip1;
scanf("%d.%d.%d.%d",&arr[0],&arr[1],&arr[2],&arr[3]);
scanf("%ld",&ip1);
printf("%ld\n",(arr[0]<<24)+(arr[1]<<16)+(arr[2]<<8)+arr[3]);
printf("%d.%d.%d.%d\n",(ip1>>24)&0xff,(ip1>>16)&0xff,(ip1>>8)&0xff,ip1&0xff);
return 0;
}