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

整数与IP地址间的转换

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

#include <iostream>
#include <sstream>
#include <string>
#include <bitset>
#include <vector>
using namespace std;
//IP地址转十进制
long convertNum(string &str)
{
    istringstream iss(str);
    string token;
    string strs;
    while(getline(iss, token, '.'))
    {
	  //将每个整数转换成8位二进制数
        strs += bitset<8>(stol(token)).to_string();
    }
  //最后将组合而成的32位进制数转换成十进制数
    return stol(strs, nullptr, 2);
}
//十进制转成IP地址
string convertIP(string &str)
{
    //将相应的数转换成32位二进制
    string ans;
    int point =3;
    str =bitset<32>(stol(str)).to_string();
    for(int i=0;i<str.size();i+=8)
    {
	  //每次取8位,转换成整数
        string s=str.substr(i,8);
        ans += to_string(stoi(s,nullptr,2));
        if(point > 0 )
        {
            ans +='.';
            point--;
        }
    }
    return ans;
}
int main() 
{
    string str1,str2;
    while(cin>>str1>>str2)
    {
        long ans= convertNum(str1);
        cout<<ans<<endl;
        string IP=convertIP(str2);
        cout<<IP<<endl;
    }
    return 0;
}

全部评论

相关推荐

头像 会员标识
12-16 14:43
浙江大学 Java
投递牛客等公司8个岗位
点赞 评论 收藏
分享
想进开水团喝开水:哦 给我一个 就算你真拿到牛友也会为你开心的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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