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

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务