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

整数与IP地址间的转换

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

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;

unsigned int ip2Dec(string& str) {
    vector<unsigned int> tokens;
    string token;
    istringstream iss(str);
    while(getline(iss, token, '.')) {
        tokens.push_back(stoi(token));
    }
    return (tokens[0] << 24) + (tokens[1] << 16) + (tokens[2] << 8) + tokens[3];
}

string Dec2Ip(unsigned int ip) {
    string str = "";
    str += to_string((ip & 0xFF000000) >> 24);
    str += ".";
    str += to_string((ip & 0x00FF0000) >> 16);
    str += ".";
    str += to_string((ip & 0x0000FF00) >> 8);
    str += ".";
    str += to_string((ip & 0x000000FF));
    return str;
}

int main() {
    string ip;
    unsigned int ip10;
    cin >> ip >> ip10;
    cout << ip2Dec(ip) << endl;
    cout << Dec2Ip(ip10);
}
// 64 位输出请用 printf("%lld")

注意使用unsigned int类型 int类型的右移算法取决于编译平台

#华为机试#
华为OD机测试题 文章被收录于专栏

个人练习专栏

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务