C#,最佳 64 位(长)Guid 类型生成器,可实现低冲突。与 Guid.NewGuid() 类似,但适用于 64 位

Joe*_*Joe 5 c# guid

我想使用 64 位标识符,类似于 Guid 的使用方式。有什么好的方法可以做到这一点?我想保持低碰撞。

public static unsafe long GetLongGuid()
{
   unchecked
   {
      fixed (byte* ptr = Guid.NewGuid().ToByteArray())
         return *((long*)ptr) ^ *((long*)(ptr + 8));
   }
}
Run Code Online (Sandbox Code Playgroud)

我应该只取高位还是低位?

或者有没有更好的原生 64 位唯一哈希函数?

Pet*_* O. 2

您可以只使用随机数生成器,或者System.RandomSystem.Security.Cryptography.RNGCryptoServiceProvider

如果不是为了性能,我不清楚为什么在这里使用不安全的代码。