题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
/*
HW字符串操作 整数与IP地址转换
本来用stoi()舒舒服服,调试没问题,提交后只过了12组测试,应该是爆int了,所以还是老老实实用数组一个一个来
*/
#include <bits/stdc++.h>
#include <cctype>
#include <regex>
using namespace std;
string s;
void todigit()
{
string t;
stringstream ss(s);
long long ans=0;
long long idx=256*256*256;
while(getline(ss,t,'.')){
ans+=stoi(t)*idx;
idx/=256;
}
cout<<ans<<endl;
}
void toip()
{
long long num=0;
long long idx=1;
for(int i=s.length()-1;i>=0;i--){
num+=(s[i]-'0')*idx;
idx*=10;
}
int a[5];
int i=3;
while(i>=0){
a[i]=num%256;
num/=256;
i--;
}
for(int i=0;i<4;i++){
if(i)cout<<".";
cout<<a[i];
}
}
int main() {
while(cin>>s){
if(s.find('.')!=string::npos)todigit();
else toip();
//todigit();
//toip();
}
}
// 64 位输出请用 printf("%lld")