0

如何将 32 位无符号整数(0~4294967295)散列到 10 位无符号整数(0~1023)?最少碰撞和快速很重要。如果方便,请用 C/C++ 编写示例。

对不起,我没有问好,这不是我的作业。也许问题背景会有所帮助。我正在编写一个服务器,该服务器必须处理来自每个客户端的 < 1024 个连接。每个客户端都有其独立的 IP 地址,存储为 32 位无符号整数。这就是问题的来源。

4

1 回答 1

2

在某些条件下(例如必须对最多 2^10 个已知项目进行哈希处理),您不会发生冲突。为了提高速度,容忍一点碰撞可能会有所帮助。更多关于这里 http://en.wikipedia.org/wiki/Perfect_hash_function

GNU 完美散列函数生成器http://www.gnu.org/software/gperf/

Pearson Hashing http://en.wikipedia.org/wiki/Pearson_hashing是一种廉价、小尺寸的密钥散列

于 2011-03-25T09:14:31.570 回答