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

整数与IP地址间的转换

https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea?tpId=37&tags=&title=&difficulty=0&judgeStatus=0&rp=1&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D37%26type%3D37

/*
思路:
    1. ip转整数
        a. 以 '.' 来分割ip字符串
        b. 分割后的字符串转成数字存在vector<size_t>数组中
        c. 通过 左移 与 或运算 得到整数
    2. 整数转ip
        a. 通过对整数进行 与运算 和 右移, 得到四个数字
        b. 通过 to_string 把四个数字转换为字符串
        c. 拼接ip字符串
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 以 '.' 来分割ip字符串
size_t ipToStr(string str){
    vector<size_t> v;
    int pos = str.find_first_of('.');
    string tmp = str.substr(0, pos);
    v.push_back(stoi(tmp));

    str = str.substr(pos+1);
    pos = str.find_first_of('.');
    v.push_back(stoi(str.substr(0, pos)));

    str = str.substr(pos+1);
    pos = str.find_first_of('.');
    v.push_back(stoi(str.substr(0, pos)));

    str = str.substr(pos+1);
    pos = str.find_first_of('.');
    v.push_back(stoi(str.substr(0, pos)));

    size_t ipInt = v[0] << 24 | v[1] << 16 | v[2] << 8 | v[3];

    return ipInt;
;
}

string numToIP(size_t str){
    string ans;
    size_t ipNum = (str);

    ans += to_string((ipNum >> 24) & 0xff);
    ans.append(1, '.');
    ans += to_string((ipNum >> 16) & 0xff);
    ans.append(1, '.');

    ans += to_string((ipNum >> 8) & 0xff);
    ans.append(1, '.');
    ans += to_string((ipNum >> 0) & 0xff);

    return ans;
}


int main() {
    string ip;
    size_t num;
    cin >> ip;
    cin >> num;

    cout << ipToStr(ip) << endl;
    cout << numToIP(num) << endl;

    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论
函数ipToStr 还可以再优化一下
点赞 回复 分享
发布于 2024-10-10 10:00 浙江

相关推荐

03-10 10:57
已编辑
门头沟学院 推荐算法
夜夜还好:我们学校说为了学生就业,更新了课程,我今天大二,上学期在学jsp,html,这学期上来工程实践,要求用springboot+vue,说什么这些技术要我们提前自己准备,要不你把学费还我吧,我给b站充个会员,人家教的比你多
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
9225次浏览 83人参与
# 你的实习产出是真实的还是包装的? #
1689次浏览 40人参与
# 巨人网络春招 #
11300次浏览 223人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7416次浏览 42人参与
# 简历第一个项目做什么 #
31519次浏览 327人参与
# 重来一次,我还会选择这个专业吗 #
433317次浏览 3926人参与
# 米连集团26产品管培生项目 #
5650次浏览 214人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186924次浏览 1120人参与
# 牛客AI文生图 #
21402次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152278次浏览 887人参与
# 研究所笔面经互助 #
118859次浏览 577人参与
# 简历中的项目经历要怎么写? #
309978次浏览 4189人参与
# AI时代,哪些岗位最容易被淘汰 #
63343次浏览 799人参与
# 面试紧张时你会有什么表现? #
30482次浏览 188人参与
# 你今年的平均薪资是多少? #
212996次浏览 1039人参与
# 你怎么看待AI面试 #
179816次浏览 1231人参与
# 高学历就一定能找到好工作吗? #
64302次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76425次浏览 374人参与
# 我的求职精神状态 #
447969次浏览 3128人参与
# 正在春招的你,也参与了去年秋招吗? #
363209次浏览 2637人参与
# 腾讯音乐求职进展汇总 #
160568次浏览 1110人参与
# 校招笔试 #
470199次浏览 2962人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务