我有一个Unicode/UTF-16编码路径.路径分隔符是U + 005C'\'.路径是以空值终止的根相对Windows文件系统路径,例如"\ windows\system32\drivers\myDriver32.sys"
我想将此路径哈希为64位无符号整数.它并不需要是"加密的声音".散列应该不区分大小写,但能够处理非ascii字母.显然,哈希也应该散布好.
我有一些想法:
A)使用Windows文件标识符作为"哈希".在我的情况下,我确实希望在文件移动时更改哈希值,因此这不是一个选项.
B)只需使用常规的sting哈希:hash + = prime*hash + codepoint作为整个字符串.
我确实感觉可以利用路径由"segements"(文件夹名称和最终文件名)组成的事实.
总结需求:
1)64位散列
2)文件系统路径的良好分布/少碰撞.
3)高效
4)不需要安全
5)不区分大小写