我需要为封装此数据的对象构建散列(作为无符号 32 位整数)。
Entry {
uint8 r;
uint8 g;
uint8 b;
bool empty;
uint8 count;
}
每个实例的散列必须是唯一的,除非实例相等。两个实例相等当且仅当:
- count 在两种情况下都相等
和
- r,g,b 相等或在两个实例中都设置为空
哈希将在哈希映射和其他容器中使用,因此可能会被非常频繁地调用。哈希生成需要快速。
我想到了 CCCERRRGGGBBB,其中:
- CCC/RRR/GGG/BBB:3 位计数/r/g/b
- E:如果设置为空,则为 1,否则为 0
但这个数字超出了范围。
有什么想法吗?