如何在C#中实现一个sdbm
哈希函数(如this)?如何在C#中实现sdbm哈希函数?
3
A
回答
4
你几乎可以把C代码无需改动:
uint sdbm(string str)
{
uint hash = 0;
foreach(char ch in str)
{
hash = ch + (hash << 6) + (hash << 16) - hash;
}
return hash;
}
或者你想到的东西更复杂?
1
我没有C编译器设置,使我无法测试,看它是否执行相同的,但我认为的以下是正确的:
private static ulong SBDM(string str)
{
ulong hash = 0;
foreach (char c in str)
{
hash = c + (hash << 6) + (hash << 16) - hash;
}
return hash;
}
如果你只需要得到一个字符串的散列,并且它实现的东西无关紧要,你总是可以执行theString.GetHashCode();
0
来自散列的结果在C++和C#实现之间有所不同。我想出str参数需要作为字节数组传递。
private uint sdbm(byte[] str)
{
uint hash = 0;
foreach (char ch in str)
hash = ch + (hash << 6) + (hash << 16) - hash;
return hash;
}
通过使用BitConverter.GetBytes方法转换要散列的值来调用该方法。
uint Hash = sdbm(BitConverter.GetBytes(myID));
相关问题
- 1. 如何在C++中实现泛型哈希函数
- 2. 如何实现动态哈希表的哈希函数?
- 3. 在C中的哈希表实现?
- 4. 在PHP函数中重现Authlogic哈希
- 5. 如何在Objective-C中实现Perl哈希?
- 6. 哈希表实现
- 7. 哈希码实现
- 8. 如何实现哈希表字典的构造函数Java
- 9. 如何实现各种类型的密钥的哈希函数?
- 10. 实现在哈希表
- 11. Rabin哈希函数 - 在Java中快速实现
- 12. JavaScript哈希映射如何实现?
- 13. 如何实现Hash#all?多维哈希?
- 14. 如何用链接实现哈希表?
- 15. C#中的DJBX33X哈希函数#
- 16. 在scala类中实现哈希方法
- 17. Python哈希函数和哈希对象
- 18. 持久哈希表实现
- 19. Java哈希表实现
- 20. Jenkins哈希的Python实现?
- 21. Jenkins哈希的Javascript实现?
- 22. 自己实现哈希
- 23. 实现哈希表的
- 24. 如何在哈希中存储哈希哈希?
- 25. PHP哈希函数
- 26. Java哈希函数
- 27. 哈希Python函数
- 28. 在javascript中构建哈希表和完美的哈希函数
- 29. 如何在C++中进行哈希
- 30. 如何在c#中存储哈希表?