C++ 利用bitset

整数与IP地址间的转换

http://www.nowcoder.com/questionTerminal/66ca0e28f90c42a196afd78cc9c496ea

#include<iostream>
#include<vector>
#include<sstream>
#include<bitset>
using namespace std;
long fun1(string s){
    //IP地址转换十进制数
    vector<int> v;
    istringstream in(s);
    int num;
    while(in>>num){
        if(num>=0&&num<=255) v.push_back(num);
        else return -1;
    }
    string res="";
    for(auto item:v){
        bitset<8> temp(item);
        res+=temp.to_string();
    }
    bitset<32> temp(res);
    long ip=temp.to_ulong();
    return ip;
}
string fun2(long ip){
    //将数字ip转换成字符串ip
    bitset<32> temp(ip);
    string s = temp.to_string();
    vector<int> v;
    for(int i=0;i<4;++i)
    {
        bitset<8> temp2(s.substr(i*8,8));
        v.push_back(temp2.to_ulong());
    }
    string res="";
    for(auto i:v)
    {
        if(i>=0&&i<=255) res = res+'.'+to_string(i);
        else return "";
    }
    return res.substr(1);
}
int main(){
    string s;
    long a;
    while(cin>>s>>a){
        for(auto &c:s)
        {
            if(c=='.') c=' ';
        }
        long res1 = fun1(s);
        string res2 = fun2(a);
        if(res1!=-1) cout<<res1<<endl;
        if(res2!="") cout<<res2<<endl;
    }
}
全部评论

相关推荐

09-21 21:14
门头沟学院
否极泰来来来来:和他说:这里不好骂你,我们加个微信聊
点赞 评论 收藏
分享
27届毕业,最近想找一段大厂实习,感觉简历有些问题,好多都不给面,求大佬们指点,最近好焦虑
重生之我学Java干...:我从后端的角度分析一下你的第一个项目,我感觉亮点不是很突出。因为我是因为组内有需求,临时上手学react干活。我用到的技术基本就cover你那个智慧园区管理平台的很多亮点了。那作为比较专业的前端,你上述的内容是不是有点单薄呢。感觉还得包装
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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