题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
获取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")
中等(算法题解) 文章被收录于专栏
中等难度题目