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

整数与IP地址间的转换

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

#include <iostream>
#include <string>
#include <sstream>

unsigned long iptonum(std::string& s) {
    std::string token;
    std::stringstream ss(s);
    //从字符串解析数据
    unsigned long  result = 0;
    while (std::getline(ss, token, '.')) {
        result = (result << 8) + std::stoi(token);
    }
    return result;
}

std::string numtoip(std::string& l) {
    unsigned long num = std::stoul(l);
    std::stringstream ss;
    //字符串拼接和转换
    ss << ((num >> 24) & 0xFF) << '.' << ((num >> 16) & 0xFF) << '.'
    << ((num >> 8) & 0xFF) << '.' << (num & 0xFF);
    std::string res = ss.str();
    return res;
}


int main() {
    std::string s;
    std::string l;

    std::getline(std::cin, s);
    // std::cin.ignore();
    std::getline(std::cin, l);
    unsigned long  ipnum = iptonum(s);
    std::string ip = numtoip(l);
    std::cout << ipnum << std::endl;
    std::cout << ip << std::endl;
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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