题解 | #整数与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地址的处理流程。