题解 | #整数与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);
}
#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);
}