题解 | #整数与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;
}

全部评论
这是一个不断发生溢出与解决溢出的过程
点赞 回复 分享
发布于 2024-03-09 00:40 河北

相关推荐

03-07 17:51
已编辑
南华大学 后端工程师
asdasdasda...:也不知道是不是真的被逼呢,也有可能女方有很多东西瞒着男方,这种东西男方什么情况都不知道全靠女方说,很难评的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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