У меня не настроен компилятор 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 ();