IPアドレスを表す文字列があります。ipv4とipv6の両方にすることができます。
私が欲しいのは、それを10進形式に変換して、そこから個々のビットを取得できるようにすることです。
たとえば、文字列「192.168.0.1」で表されるアドレスの場合、10進数の3232235521を取得したいと思います。
最良の方法は、いくつかの標準ライブラリを使用することです。たとえば、関数inet_ptonはうまく機能します。でも使い方がわかりません。
ここにsockaddr_inに関する情報に基づいて次のコードを書きました:
struct sockaddr_in sa;
char str[INET_ADDRSTRLEN];
// store this IP address in sa:
inet_pton(AF_INET, "192.168.0.1", &(sa.sin_addr));
cout<<"bin by inet_pton"<<sa.sin_addr.s_addr<<endl;
これで553779392になります。この番号は1.0.168.192に対応します。もちろん、なんとかしてこの数値を逆にする関数を書くこともできますが、IPアドレスをバイナリに変換するための標準的で効果的な方法を探しています。