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

整数与IP地址间的转换

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

尝试用了下bitset,感觉还是做麻烦了

#include<bits/stdc++.h>

using namespace std;
unsigned long string2int(string str);
int string2int_2(string str);
int main(){

    string str;
    unsigned long n;
    while(cin>>str>>n){
        vector<string> vec;
        size_t pos = str.find(".");
        while(pos!=string::npos){
            vec.push_back(str.substr(0,pos));
            str= str.substr(pos+1);
            pos = str.find(".");
        }
        vec.push_back(str);
        bitset<8> b1(string2int(vec[0]));
        bitset<8> b2(string2int(vec[1]));
        bitset<8> b3(string2int(vec[2]));
        bitset<8> b4(string2int(vec[3]));
        string res = b1.to_string()+b2.to_string()+
                    b3.to_string()+b4.to_string();
        bitset<32> b32(res);
        cout<<b32.to_ulong()<<endl;
        
        string res2="";
        bitset<32> bb(n);
        string tmp = bb.to_string();
        int p1= (int)string2int_2(tmp.substr(0,8));
        int p2= (int)string2int_2(tmp.substr(8,8));
        int p3= (int)string2int_2(tmp.substr(16,8));
        int p4= (int)string2int_2(tmp.substr(24,8));
        res2=to_string(p1)+"."+to_string(p2)+"."+
            to_string(p3)+"."+to_string(p4);
        cout<<res2<<endl;
    }
    return 0;
}

unsigned long string2int(string str){
    unsigned long res=0;
    for(int i=0;i<str.size();++i){
        res = res*10 + (str[i]-'0');
    }
    return res;
}

int string2int_2(string str){
    int res=0;
    for(int i=0;i<str.size();++i){
        res = res*2 + (str[i]-'0');
    }
    return res;
}

全部评论

相关推荐

2025年10月3日中午,在写完定时一年后发给自己的信之后,敲下键盘,写下这篇文字。我把标题的“所有人”加了引号,因为如我们所见,确实有的人顺风顺水,每天过的很开心,或是早早进入大厂,或是年纪轻轻就拿到了高薪offer,或是过着可能我努力十年也不一定实现的生活。但也许,不是每个人的痛苦都能被别人看到的,这个月我经常会哭,被骗6000块钱、手上钱不够导致拖欠房租、生活还要借朋友钱、国庆长假也没有钱去旅游,互联网公司不稳定担心试用期不过(毕竟上段实习就是被裁了,一有点风吹草动就害怕),但这样的我,不是所有人都知道的,居然是有些朋友的羡慕对象。回忆我的七年“长跑”别人都是多年幸福的恋爱长跑,我没有恋...
故事和酒66:让每一颗种子找到合适自己的生长方式,最终绽放出独一无二的花朵,这远比所有人都被迫长成同一棵“参天大树”的世界,更加美好和富有生机。这是社会和环境的问题,而不是我们的问题。然而就是在这样的环境中,楼主依然能突破自我,逆势成长,其中的艰辛可想而知。这一路的苦难终究会化作你成长的养料
你小时候最想从事什么职业
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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