题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
#include <stdio.h>
int main()
{
int a,b,c,d;
unsigned int n1,n2;
while(scanf("%d.%d.%d.%d",&a,&b,&c,&d)!=EOF)
{
scanf("%u",&n1);
n2=(a<<24)+(b<<16)+(c<<8)+d;
printf("%u\n",n2);
a=(n1>>24)&255;
b=(n1>>16)&255;
c=(n1>>8)&255;
d=(n1)&255;
printf("%d.%d.%d.%d",a,b,c,d);
}
}
获取ip地址的数据时,总是习惯性第向要将其转换为字符以后处理,今天看到这个处理方法非常巧妙,就是利用scanf的输入特性,读取ip的数字,例如192.168.18.18,读取其中的数字时,不必将其转换成字符串,而是写成这样:
while(scanf("%d.%d.%d.%d",&a,&b,&c,&d)!=EOF)
这样一来就能通过abcd四个变量获取到ip地址中的数字
原理:scanf原来是以空格为结束标志,写成上文这样是将scanf的结束标志改成了“.”,这样做简化了ip地址的处理流程。
