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 へのキャストは、一対一のマッピングではないのでしょうか? ありがとう!