1
DJBX33X哈希函数如何在C#中实现?在C.C#中的DJBX33X哈希函数#
uint32_t hash(const char *arKey, uint32_t nKeyLength)
{
uint32_t hash = 5381;
for (; nKeyLength > 0; nKeyLength -=1)
{
hash = ((hash << 5) + hash)^*arKey++;
}
return hash;
}
这个函数下面是代码修订这里是我到目前为止的代码,但是从C和C#函数的结果是不同的,没有我错过了什么?
public static long hash(string str)
{
long hash = 5381;
for (int i = 0; i < str.Length; i++)
{
hash = ((hash << 5) + hash)^(int)str[i];
}
return hash;
}
更新2以下为C的outpus和C#
C#
t = 116(<<172192+177573) -> 177617
t = 116(<<5683744+5861361) -> 5861253
u = 117(<<187560096+193421349) -> 193421392
U = 85(<<6189484544+6382905936) -> 6382905861
'ttuU' => '6382905861'
C
t = 116 (<<172192+177573) -> 177617
t = 116 (<<5683744+5861361) -> 5861253
u = 117 (<<187560096+193421349) -> 193421392
U = 85 (<<1894517248+2087938640) -> 2087938565
'ttuU' -> '2087938565'
你尝试过这么远吗?我没有看到任何特别困难的C#完成给定的C代码... – aardvarkk 2012-01-04 15:47:55