1

ip-port ペアを検索キーにしたいので、以下の機能を持っています

    int64_t make_pair(u_int32_t ip, u_int16_t port)
    {
            u_int64_t ip_u64 = ip;
            ip_u64 = ip_u64 << 16;
            int64_t ip_port_pair = (int64_t)(ip_u64 + (u_int64_t)port);
            return ip_port_pair;
    }

実際、符号なし整数で値を比較するのは不便なので、u_int64_t を int64_t に変換したいと思います。しかし、残念ながら u_int64_t から int64_t へのキャストは 1 対 1 のマッピングではなく、衝突や検索エラーが発生します。

u_int64_t から int64_t へのキャストは、一対一のマッピングではないのでしょうか? ありがとう!

4

1 に答える 1