获取ip地址后,它的每一段都是以2^8的幂为基数的,ip的第一段的数值是对应数值乘以2^8^3,往后以此类推,可计算得到长整数结果。由整数转为ip地址就是上一步骤的逆运算。
#include <iostream>
#include <cmath>
using namespace std;
int main() {
string s1;
long long s2;
cin >> s1 >> s2;
long long sum = 0;
int position = -1;
for (int i = 0; i < 4; i++) {
int start = position + 1;
position = s1.find('.', start);
if(position == string::npos) {
position = s1.length();
}
sum += stoi(s1.substr(start, position - start)) * pow(256, 3 - i);
}
cout << sum << endl;
string ans;
while (s2 != 0) {
ans = to_string(s2 % 256) + ans;
if (s2 / 256 != 0) {
ans = '.' + ans;
}
s2 /= 256;
}
cout << ans;
}
// 64 位输出请用 printf("%lld")



京公网安备 11010502036488号