MST

星途 面试题库

面试题:C++中IP地址编码结构的基本解析

在C++中,假设IP地址采用IPv4格式(32位),请编写一个函数,将点分十进制表示的IP地址(如"192.168.1.1")解析并存储到一个4字节的unsigned int类型变量中,描述IP地址编码结构在此过程中的应用。
24.9万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>
#include <string>
#include <sstream>

unsigned int parseIP(const std::string& ipStr) {
    std::istringstream iss(ipStr);
    std::string segment;
    unsigned int result = 0;
    int shift = 24;

    while (std::getline(iss, segment, '.')) {
        unsigned int part = std::stoi(segment);
        result |= (part << shift);
        shift -= 8;
    }

    return result;
}

IP地址编码结构在此过程中的应用

  1. 点分十进制表示:IPv4地址以点分十进制表示,如192.168.1.1,这种表示方法将32位的二进制IP地址分成4个8位(1字节)的部分,每个部分取值范围是0 - 255 ,便于人们阅读和记忆。
  2. 解析过程:在上述代码中,通过std::istringstreamstd::getline'.'分隔字符串,依次获取每个十进制部分。然后将每个十进制部分转换为整数,再通过移位操作将其放到unsigned int对应的8位位置上(从高位到低位,每次左移8位),最终组合成32位的unsigned int类型变量,完成从点分十进制到32位二进制编码的转换,这一过程充分利用了IPv4地址每8位为一个独立部分的编码结构。