【发布时间】:2018-11-29 11:55:27
【问题描述】:
如何从GUID 获取唯一的(大部分时间)ushort 数字,我尝试了下面的代码,但由于我将其转换为 ushort,所以它只是忽略了 GUID 的 LSB 十六进制值
static ushort GetId() {
Guid guid = Guid.NewGuid();
byte[] buffer = guid.ToByteArray();
return BitConverter.ToUInt16(buffer, 0);
}
仅供参考:在我的代码中,我有一个 guid,我想保留相应的 ushort 号码。
【问题讨论】:
-
ushort只有 65,536 个可能的值,你需要它有多随机/唯一? -
如果你想要一个唯一的 16 位值,最简单的方法是使用计数器,你可以从 128 位唯一性中借用 16 位唯一性的想法是行不通的。
-
一个 GUID 有 2^122 或 5,316,911,983,139,663,491,615,228,241,121,400,000 个不同的可能值。
ushort有 65,535 个。看到不同?你要求的是不可能的。而是解释您要解决的问题。 -
为什么您希望
ushort基于 GUID?为什么不根据重复生成一个随机的ushort?
标签: c# uniqueidentifier