我想使用 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 位唯一哈希函数?
您可以只使用随机数生成器,或者System.Random或System.Security.Cryptography.RNGCryptoServiceProvider。
如果不是为了性能,我不清楚为什么在这里使用不安全的代码。