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

整数与IP地址间的转换

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

#include<iostream>
#include<string>
#include<algorithm>
#include<math.h>
using namespace std;
string p(long long int n)
{
   string a;
    while(n)
    {
        if(n%2==0)
        {
            a=a+'0';
            n=n/2;
        }
        else if(n%2==1)
        {
            a=a+'1';
            n=n/2;
        }
    }
      reverse(a.begin(),a.end());
    return(a);
}
int main()
{
    long long int a,b,c,d;
    long long int e;
    char f,g,h;
    while(cin>>a>>f>>b>>g>>c>>h>>d>>e)
    {
     string aa=p(a);
      
        string bb=p(b);
        int bbb=bb.length();
        for(int i=1;i<=8-bbb;i++)
        {
            bb='0'+bb;
        }
         string cc=p(c);
        int ccc=cc.length();
        for(int i=1;i<=8-ccc;i++)
        {
            cc='0'+cc;
        }
         string dd=p(d);
        int ddd=dd.length();
        for(int i=1;i<=8-ddd;i++)
        {
            dd='0'+dd;
        }
        aa=aa+bb+cc+dd;
        long long int m=0;
        for(int i=0;i<aa.length();i++)
        {
            m=m+pow(2,aa.length()-i-1)*(aa[i]-'0');
        }
        string ee=p(e);
        int eee=ee.length();
          for(int i=1;i<=32-eee;i++)
        {
            ee='0'+ee;
        }
        cout<<m<<endl;
       for(int i=0;i<32;i=i+8)
       {
        string w=ee.substr(i,8);
           int ww=w.length();
            int u=0;
        for(int i=0;i<ww;i++)
        {
            u=u+pow(2,ww-i-1)*(w[i]-'0');
        } 
           if(i!=0)
           {
          cout<<'.'<<u; 
           }
           else if(i==0)
           {
               cout<<u;
           }
       }  
    }
    return(0);
}
全部评论

相关推荐

07-09 19:25
门头沟学院 Java
这是要把每一个投校招的都开盒吗?
26届之耻将大局逆转:裁人的时候一次性追回餐费
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务