0
Как будет реализована хеш-функция sdbm в C#?
Как можно реализовать sdbm
хеш-функцию (например, эту ) на C#?
Ответов (3)3
0
У меня нет установленного компилятора C, поэтому я не могу проверить, работает ли он так же, но я думаю, что верно следующее:
private static ulong SBDM(string str)
{
ulong hash = 0;
foreach (char c in str)
{
hash = c + (hash << 6) + (hash << 16) - hash;
}
return hash;
}
Если вам просто нужно получить хэш строки, и не имеет большого значения, какова реализация, вы всегда можете сделать String.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));