题解 | #整数与IP地址间的转换#

整数与IP地址间的转换

https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea

#include <bitset>
#include <iostream>
#include <regex>
#include <string>
#include <vector>
#include <bits/stdc++.h>
using namespace std;

long long ip_add (vector<string> vec){
    string str;
    for (auto it : vec){
        int n = stoi(it);
        bitset<8> foo(n);
        str += foo.to_string();
    }
    bitset<32> foo_add(str);
    long long add = foo_add.to_ulong();
    return add;
}
string add_ip(string str_add){
    long long n = stol(str_add);
    bitset<32> foo(n);
    string add = foo.to_string();
    vector<string> vec;
    for (int i = 0; i < 4; i++){
        vec.push_back(add.substr(i * 8, 8));
    }
    vector<int> tmp(4);
    for (int i = 0; i < 4; i++){
        bitset<8> foo(vec[i]);
        tmp[i] = foo.to_ulong();
    }
    string ip;
    for (int i = 0; i < 4; i++){
        ip += to_string(tmp[i]) + '.';
    }
    ip.erase(ip.end() - 1);
    return ip;
}
int main() {
    string str_ip, str_add;
    cin >> str_ip >> str_add;
    string tmp;
    vector<string> vec;
    for (int i = 0; i < str_ip.size(); i++){
        if (str_ip[i] == '.'){
            vec.push_back(tmp);
            tmp = "";
        }
        else {
            tmp += str_ip[i];
        }
        if (i == str_ip.size() - 1)
            vec.push_back(tmp);
        
    }
    long long result = ip_add(vec);
    string ip = add_ip(str_add);
    cout <<result<<endl<<ip;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务