1
C#でDJBX33Xハッシュ関数をどのように実装するのですか?以下は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;
}
UPDATED 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