public static void Main()
var hash = GetStablePositiveHashCode("Marrón Sophie");
public static int GetStableHashCode(string str)
if (str == null) return 0;
for (int i = 0; i < str.Length && str[i] != '\0'; i += 2)
hash1 = ((hash1 << 5) + hash1) ^ str[i];
if (i == str.Length - 1 || str[i + 1] == '\0')
hash2 = ((hash2 << 5) + hash2) ^ str[i + 1];
return hash1 + (hash2 * 1566083941);
public static int GetStablePositiveHashCode(string str) => Math.Abs(GetStableHashCode(str));