题解 | #整数与IP地址间的转换#

整数与IP地址间的转换

http://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea

使用位操作解此题更加直观方便!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void ip2decimal(char ipstr[]){
    unsigned int n = 0;
    unsigned int seg;
    char *p;
    for (p = strtok(ipstr, "."); p != NULL; p = strtok(NULL, ".")){
        seg = atoi(p);
        n = (n << 8) | seg;
    }
    printf("%u\n", n);
}

void decimal2ip(char dstr[]){
    int i;
    unsigned int n = atoi(dstr);
    unsigned int mask = 0xff;
    //printf("%u", n);
    for (i = 24; i >= 0; i -= 8){
        printf("%d", (n >> i) & mask);
        if (i > 0)
            putchar('.');
    }
    putchar('\n');
}

int main(){
    char s[19];
    while (scanf("%s", s) == 1)
        if (strchr(s, '.') > 0)
            ip2decimal(s);
        else
            decimal2ip(s);
}
全部评论

相关推荐

程序员鼠鼠_春招版:都很烂大街,rpc也基本没人问,考研吧,不然就包装一段实习再去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务