В этой статье мы рассмотрим несколько методов преобразования десятичного 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 в их двоичное представление. Наслаждайтесь программированием!