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

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

using namespace std;

int main()
{
    string input1;
    unsigned int input2;
    cin >> input1 >> input2;


    // ip地址转换成10进制
    stringstream ss(input1);
    string token;
    char delimiter = '.';
    vector<int> nums;
    while (getline(ss, token, delimiter)) {
        nums.push_back(stoi(token));
    }
    unsigned int result1 = (nums[0] << 24) + (nums[1] << 16) + (nums[2] << 8) + nums[3];


    // 10进制转换成ip地址
    unsigned int pos1 = input2 >> 24;
    unsigned int pos2 = (input2 >> 16) & 0xff;
    unsigned int pos3 = (input2 >> 8) & 0xff;
    unsigned int pos4 = input2 & 0xff;
    
    ss.clear();
    ss.str("");
    ss << pos1 << "." << pos2 << "." << pos3 << "." << pos4;
    string result2 = ss.str();


    // 输出
    cout << result1 << endl;
    cout << result2 << endl;

    // system("pause");
    return 0;
}
  • 不使用scanf获取输入
  • 使用stringstream来分割
全部评论

相关推荐

浏览器中的任务队列(Task&nbsp;Queue)是用来管理待执行的任务的队列,任务一般是由&nbsp;JavaScript&nbsp;代码生成的,包括异步任务、事件回调等。任务队列采用先进先出(FIFO)的方式来执行任务。与任务队列密切相关的是事件循环(Event&nbsp;Loop)。事件循环是浏览器用来处理任务和事件的机制,它不断地从任务队列中取出任务,执行任务,并在必要时监听和处理事件。事件循环的基本流程如下:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&amp;uuid=5bbc1ec127b94659b8688475db533ecb执行同步任务:JavaScript&nbsp;引擎首先执行当前正在执行的同步任务,这部分任务是按照代码的顺序执行的。执行微任务:当执行同步任务完成后,会检查是否有微任务(Promise、MutationObserver&nbsp;等)需要执行,并按照先进先出的顺序执行微任务队列中的任务。微任务执行过程中产生的新的微任务会继续放入微任务队列中,直到队列为空。执行宏任务:微任务执行完毕后,会检查是否有宏任务(setTimeout、setInterval、I/O&nbsp;等)需要执行,并从相应的宏任务队列中取出一个任务执行。宏任务的队列是根据任务的类型和优先级来划分的。重复执行:重复执行上述步骤,不断地从任务队列中取出任务,执行任务,直到任务队列和微任务队列都为空。通过事件循环机制,浏览器可以在执行&nbsp;JavaScript&nbsp;代码的同时监听和响应用户操作、网络请求、定时器触发等事件,实现异步编程和交互式的用户界面。任务队列和事件循环的关系是,任务队列中的任务会被事件循环按照一定的规则和优先级执行。在事件循环的过程中,宏任务和微任务会交替执行,根据任务队列的类型和优先级来确定下一个要执行的任务。需要注意的是,由于执行的上下文可能会发生变化,因此在微任务执行完毕之前,可能有新的事件产生并加入到任务队列中,这些新的任务会在下一轮的事件循环中被执行。通过了解浏览器中的任务队列和事件循环机制,我们可以更好地理解&nbsp;JavaScript&nbsp;异步编程的原理和执行顺序,从而编写出高效、优雅的代码。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务