朋友们呢,我有一个查询,因为我找不到太多关于它的信息,例如,我如何实现压缩哈希函数来订购10个车牌?车牌由3个数字和3个字母组成,有人可以给我举个例子来支持我
一个简单的方法就是在内存中并排排列值,然后在该内存块上运行现有的哈希函数。对于大多数目的来说,即使是CRC函数也会产生足够好的结果。
另一种方法是从一个数字中选择任何能产生良好哈希的函数,并依次对每个部分进行哈希(或者在必要时只使用数字-一个身份哈希-这将是字母的ASCII/Unicode/etc值(:3个数字,然后是3个字母,给你六个哈希值-假设你已经放入了数组元素h[0]
到h[5]
,然后可以按如下方式组合:
size_t x = 0;
for (int i = 0; i < 5; ++i)
x ^= h[i] + 0x9e3779b9 + (x<<6) + (x>>2);
如果你想知道为什么这通常是合理的,请检查这个问题。