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