C++ のサブネット マスクと数値の変換

unsigned int MaskConvertToUint(const std::string &mask)
{
    
    
    unsigned int number = 0;
    unsigned int temp = 0;
    int count = 3;

    std::istringstream iss(mask);
    std::string token;

    while (std::getline(iss, token, '.'))
    {
    
    
        temp = std::stoi(token);
        number += temp << (count * 8);
        count--;
    }

    return number;
}

std::string UintConvertToMask(unsigned int num)
{
    
    
    std::stringstream ss;

    unsigned int mask = 0xFFFFFFFF << (32 - num);

    for (int i = 3; i >= 0; --i)
    {
    
    
        unsigned int octet = (mask >> (i * 8)) & 0xFF;
        ss << octet;

        if (i > 0)
            ss << ".";
    }

    return ss.str();
}

おすすめ

転載: blog.csdn.net/qq_33191599/article/details/131638886
おすすめ