zoukankan      html  css  js  c++  java
  • 将ip地址转成二进制数据,除基本输入输出不调用库函数实现

    int inet_aton(const char *cp)
    {
    int dots = 0;
    int a[32]= {0};
    register unsigned long acc = 0, addr = 0;
    do {
    register char cc = *cp;
    switch (cc)
    {
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
    acc = acc * 10 + (cc - '0');
    break;
    case '.':
    if (++dots > 3)
    {
    return 0;
    }
    // Fall through
    case '':
    if (acc > 255)
    {
    return 0;
    }
    addr = addr << 8 | acc; // 这句是精华,每次将当前值左移八位加上后面的值 addr 最后结果是个unsigned long 型整数。
    acc = 0;
    break;
    default:
    return 0;
    }
    } while (*cp++) ;
    // Normalize the address
    if (dots < 3)
    {
    addr <<= 8 * (3 - dots) ;
    }

    int k=0;
    while (addr)
    {
    a[k++]=addr%2;
    addr/=2;
    }
    for (int k=31;k>=0; k--)
    {
    cout <<a[k];
    if (k%8==0)
    {
    cout<<" ";
    }
    }
    return 1;
    }

    博客内容只为本人学习所感转载亦或自写,不足或错误之处请大家不吝赐教
  • 相关阅读:
    AcWing 199. 余数之和
    AcWing 295. 清理班次
    AcWing 294. 计算重复
    Acwing 393. 雇佣收银员
    AcWing 362. 区间
    AcWing 361. 观光奶牛
    CSP-S 2019 Emiya 家今天的饭
    CSP-S 2019游记
    AcWing 345. 牛站 Cow Relays
    java 环境配置
  • 原文地址:https://www.cnblogs.com/niupan369/p/4045901.html
Copyright © 2011-2022 走看看