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

整数与IP地址间的转换

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

#include<iostream>
#include<string>

using namespace std;

void toNum(string ip) {
    long num[4] = {0, 0, 0, 0};
    int point = 0; //记录点出现的次数
    for (int i = 0; i < ip.length(); i++) { //遍历ip字符串
        if (ip[i] != '.') { //通过.分割
            num[point] = num[point] * 10 + ip[i] - '0';
        } else {
            point++; //点数增加
        }
    }
    long output = num[0] << 24 | num[1] << 16 | num[2] << 8 |
                  num[3]; //位运算组装
    cout << output << endl;
}

void toIP(long num){
    string output = "";
    output += to_string((num >> 24) & 0xff); //取第一个八位二进制转换成字符
    output += ".";
    output += to_string((num >> 16) & 0xff); //取第二个八位二进制转换成字符
    output += ".";
    output += to_string((num >> 8) & 0xff); //取第三个八位二进制转换成字符
    output += ".";
    output += to_string(num & 0xff); //取第四个八位二进制转换成字符
    cout << output << endl;
}

int main() {
    string s;
    getline(cin, s);
    long num;//需要转IP地址的长整数
    cin >> num;

    toNum(s);
    toIP(num);
    
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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