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

中等(算法题解) 文章被收录于专栏

中等难度题目

全部评论

相关推荐

真烦好烦真烦:牛友太有实力了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务