1

IPv6をC++で保存するための最も効率的な方法は何でしょうか。

基本的に、可能な限り柔軟性があり、既存のライブラリとの互換性を提供するフォーマットが必要です。私が最初に考えたstd::vector<int>のは、アドレスの各部分に簡単にアクセスできるシンプルなものを使用することでした。

それは良い解決策ですか?それとも、後でトラブルに遭遇する可能性がありますか?

4

2 に答える 2

7

それは問題ないはずですが、std ::vector<uint8_t>を実行することをお勧めします。私は個人的にcのstructsockaddr_in6を使用します。

/* IPv6 address */
struct in6_addr
  {
    union
      {
    uint8_t u6_addr8[16];
    uint16_t u6_addr16[8];
    uint32_t u6_addr32[4];
      } in6_u;
#define s6_addr         in6_u.u6_addr8
#define s6_addr16       in6_u.u6_addr16
#define s6_addr32       in6_u.u6_addr32
  };

これを含めてください:

  #include <netinet/in.h>

そうすれば、住所の静的なインティレーションを使用して、それで済ませることができます。ベクトルに対してpush_backを繰り返し実行すると、非常に面倒になり、読みにくくなります。

于 2013-01-17T05:33:32.480 に答える
0

IPv6アドレスを保存するつもりですか?その場合、intだけでは不十分であり、それぞれに128ビットが必要です。

于 2013-01-17T05:32:01.060 に答える