zoukankan      html  css  js  c++  java
  • 将字符串表示的IP地址转变为整形表示

    当时面试上机的想法是,直接使用uint32_t变量来存ip地址,遍历字符串带".",然后去值,利用移位来将这个值填到uint32_t对应的位置上。这样的麻烦之处在于:

    1,遍历字符串,还得记录每个"."出现的位置;

    2,移位操作;

    而最巧妙的做法是,利用一个uint8_t的数组(长度为4)和sscanf函数进行取ip字符串对应的值:

    uint32_t ip2long(char* ip) {

    uint8_t addr[4] = {0};

    sscanf(ip, "%d.%d.%d.%d", &addr[0],&addr[1],&addr[2],&addr[3]);

    return *(uint32_t*)addr;

    }

    5行代码就搞掂,而我上机时候写的应该是接近20行了吧?而且循环调用atoi()函数,无论是性能和简洁程度都无法比。

    教训是,在看一些优秀的代码时,不能走马观花!努力去思考当时作者的想法。

  • 相关阅读:
    第八周上机作业
    第七次作业
    第七周上机
    第六周作业
    4.9上机作业
    第五周作业
    第四周作业
    第二次上机作业
    第三周作业
    第九周上机练习
  • 原文地址:https://www.cnblogs.com/lidabo/p/9649969.html
Copyright © 2011-2022 走看看