什麼爲UTF-8字符串的最佳哈希函數返回32位或64位整數,既考慮到性能和「最小碰撞」什麼是爲UTF-8字符串的最佳哈希
1
A
回答
2
3
如果您沒有任何其他更具體的要求,我會去Fowler/Noll/Vo或Jenkins' one-at-a-time。
請記住,您應該始終檢查您的輸入數據是否會觸發退化情況(即過度的衝突)。
0
我目前使用下面的一個。它並不比* 33 djb版本(或FNV或Jenkins)更好,但它在較低位中的熵要稍好一些,如果表的大小是2的冪,那麼它是需要的。
unsigned hash_mem(void *dat, size_t len)
{
unsigned char *str = (unsigned char*) dat;
unsigned val=0;
size_t idx;
for(idx=0; idx < len; idx++) {
val ^= (val >> 2)^(val << 5)^(val << 13)^str[idx]^0x80001801;
}
return val;
}
相關問題
- 1. 什麼是從一個更長的字符串生成短哈希字符串的最佳方式
- 2. 哈希字符串
- 3. 爲什麼我的哈希按字符串打印?
- 4. 將字符串轉換爲哈希中符號的最佳方法
- 5. 基本字符串哈希/去哈希
- 6. 比較哈希散列的最佳方法是什麼?
- 7. Rabin-Karp算法的最佳哈希函數是什麼?
- 8. 計算一個UTF8字符串的MD5哈希
- 9. 爲什麼MD5哈希For FileStream和字符串不同C#
- 10. 將csv轉換爲字符串的最佳方法是什麼?
- 11. 什麼是轉換爲數組的最佳字符串格式?
- 12. 什麼是分隔字符串的最佳ASCII字符?
- 13. 哈希名字符串
- 14. 哈希字符串大小
- 15. 字符串哈希轉換
- 16. 爲什麼我的哈希不是undef?
- 17. 如何哈希轉換爲字符串
- 18. 一個爲什麼要使用字符串鍵的哈希過的符號
- 19. 解析字符串內的這個字符串的最佳方法是什麼?
- 20. 獲取字符串數組的子字符串的最佳方法是什麼?
- 21. 爲什麼即使使用字符串的哈希值,如果符號存在
- 22. 字符串到哈希中的符號
- 23. 爲什麼字符串與它的散列哈希,因爲鹽返回散列?
- 24. 將字符串轉換爲哈希字符串:值格式
- 25. 爲什麼一個哈希文字在Ruby中稱爲哈希文字?
- 26. preg_match_all提取部分字符串的最佳模式是什麼?
- 27. 解析字符串間隔的最佳方法是什麼?
- 28. 什麼是合併字符串的最佳方式?
- 29. 刪除部分字符串的最佳方法是什麼? (C#)
- 30. PHP,刪除已知字符串的最佳選擇是什麼?
我認爲這取決於你想要散列的字符串。 – phimuemue 2012-03-08 10:39:05
在Christoph建議的[鏈接](http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx#fnv)下給出了非常全面的答案。它描述了11個流行的散列函數,包含源代碼,對等和一般性討論。 – 2012-05-04 10:14:06