System.Console.Write("String to hash: ");
var input = System.Console.ReadLine();
System.Console.Write("Total number of buckets: ");
var total = System.Console.ReadLine();
var bytes = Encoding.UTF8.GetBytes(input);
var hash16Bytes = MurmurHash.Create128(managed: false).ComputeHash(bytes);
(byte)(hash16Bytes[0] ^ hash16Bytes[1]),
(byte)(hash16Bytes[2] ^ hash16Bytes[3]),
(byte)(hash16Bytes[4] ^ hash16Bytes[5]),
(byte)(hash16Bytes[6] ^ hash16Bytes[7]),
(byte)(hash16Bytes[8] ^ hash16Bytes[9]),
(byte)(hash16Bytes[10] ^ hash16Bytes[11]),
(byte)(hash16Bytes[12] ^ hash16Bytes[13]),
(byte)(hash16Bytes[14] ^ hash16Bytes[15])
var @long = System.BitConverter.ToInt64(hash8Bytes);
ulong nonNegativeLong = (ulong)(@long << 1) >> 1;
ulong nonNegativeBucketId = nonNegativeLong % (ulong)int.Parse(total!);
System.Console.WriteLine($"Bucket: {nonNegativeBucketId}");