Преобразование десятичных IP-адресов IPv4 в 32-битный двоичный IP-адрес: простые методы на C++

В этой статье мы рассмотрим несколько методов преобразования десятичного IP-адреса IPv4 с точками в 32-битный двоичный IP-адрес с использованием C++. Мы предоставим примеры кода для каждого метода, чтобы у вас было четкое понимание реализации. Давайте погрузимся!

Метод 1: использование побитовых операций

#include <iostream>
#include <sstream>
#include <bitset>
std::string convertToBinary(const std::string& ip) {
    std::stringstream ss(ip);
    std::string segment;
    std::string binaryIP;
    while (std::getline(ss, segment, '.')) {
        int num = std::stoi(segment);
        std::bitset<8> bits(num);
        binaryIP += bits.to_string();
    }
    return binaryIP;
}
int main() {
    std::string ip = "192.168.0.1";
    std::string binaryIP = convertToBinary(ip);
    std::cout << "Binary IP: " << binaryIP << std::endl;
    return 0;
}

Метод 2: использование библиотеки Boost

#include <iostream>
#include <boost/asio/ip/address_v4.hpp>
std::string convertToBinary(const std::string& ip) {
    boost::asio::ip::address_v4 address(boost::asio::ip::address_v4::from_string(ip));
    std::string binaryIP = address.to_ulong();
    return binaryIP;
}
int main() {
    std::string ip = "192.168.0.1";
    std::string binaryIP = convertToBinary(ip);
    std::cout << "Binary IP: " << binaryIP << std::endl;
    return 0;
}

Метод 3: использование битовых и строковых потоков

#include <iostream>
#include <bitset>
#include <sstream>
std::string convertToBinary(const std::string& ip) {
    std::stringstream ss(ip);
    std::string segment;
    std::bitset<8> bits;
    std::string binaryIP;
    while (std::getline(ss, segment, '.')) {
        int num = std::stoi(segment);
        bits = std::bitset<8>(num);
        binaryIP += bits.to_string();
    }
    return binaryIP;
}
int main() {
    std::string ip = "192.168.0.1";
    std::string binaryIP = convertToBinary(ip);
    std::cout << "Binary IP: " << binaryIP << std::endl;
    return 0;
}

Метод 4. Использование функций библиотеки C

#include <iostream>
#include <arpa/inet.h>
std::string convertToBinary(const std::string& ip) {
    struct in_addr addr{};
    inet_pton(AF_INET, ip.c_str(), &(addr.s_addr));
    std::string binaryIP = std::bitset<32>(ntohl(addr.s_addr)).to_string();
    return binaryIP;
}
int main() {
    std::string ip = "192.168.0.1";
    std::string binaryIP = convertToBinary(ip);
    std::cout << "Binary IP: " << binaryIP << std::endl;
    return 0;
}

В этой статье мы рассмотрели несколько методов преобразования десятичного IP-адреса IPv4 с точками в 32-битный двоичный IP-адрес с использованием C++. Мы предоставили примеры кода для каждого метода, что позволяет вам выбрать подход, соответствующий вашим требованиям. Реализуя эти методы, вы можете легко преобразовать адреса IPv4 в их двоичное представление. Наслаждайтесь программированием!