2014-05-01 56 views
1

是否有Boost库的任何功能,我可以转换和IPv4地址给出字符串:转换IP地址,以提高:: UINT32

std::string ip_address = "192.168.0.1"; 

成二进制格式如下“11000000101010000000000000000001”并将其存储在boost :: unit32单元中,或者我应该自己构建函数?

另外如何将IPv6地址从std :: string转换为4 * unit32,有没有任何函数将其转换为八位字节?

+0

IPv6地址如何? – xxbbcc

+0

我编辑了,我的意思是像IPv4 – IoT

回答

5

Boost.Asio将让你有,如:

boost::asio::ip::address_v4::from_string("192.168.0.1").to_ulong(); 

IPv6是一个有点复杂,因为你必须使用boost::asio::ip::address_v6::from_string(addr).to_bytes()返回一个boost::array<unsigned char, 16>,并从自己的转换。

+0

一样注意,to_ulong以主机顺序返回,而to_ubyte以网络字节顺序返回 – UmNyobe