题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
#include <cmath>
#include <iostream>
#include <string>
using namespace std;
long ip_to_num(string ip){
long num = 0;
int seg = 3;//标记当前得到的数字在ip地址的第几段
string cur_str;
for(int i = 0; i < ip.length(); i++){
if(ip[i] >= '0' && ip[i] <= '9') cur_str += ip[i];
if(ip[i] == '.' || i == ip.length() - 1){
num += stol(cur_str) * pow(256, seg);
seg--;
cur_str.clear();
}
}
return num;
}
string num_to_ip(long num){
string ip;
int seg = 3;
while(num > 255){
int x = pow(256, seg);
ip = ip + to_string(num/x) + '.';
num = num % x;
seg--;
}
ip += to_string(num);
return ip;
}
int main() {
string ip;
long num;
cin >> ip >> num;
cout << ip_to_num(ip) << endl << num_to_ip(num) << endl;
return 0;
}


查看3道真题和解析