如何从ushort
获取唯一的(大部分时间)GUID
数字,我尝试了下面的代码,但是由于我将其转换为ushort,所以它只是忽略了LSB的LSB十六进制值GUID
static ushort GetId() {
Guid guid = Guid.NewGuid();
byte[] buffer = guid.ToByteArray();
return BitConverter.ToUInt16(buffer, 0);
}
仅供参考:在我的代码中的某个地方,我有一个向导,我想保留相应的ushort号码。
答案 0 :(得分:0)
我尝试了下面的代码,但由于我将其转换为ushort,所以它 只是忽略了GUID的LSB十六进制值
是的,这是正确的,并且有充分的理由,您不能在16位数据中存储128位数据。
Name Length (bytes) Contents
---------------------------------------------------------------------------------------
time_low 4 integer giving the low 32 bits of the time
time_mid 2 integer giving the middle 16 bits of the time
time_hi_and_version 2 4-bit "version" in the most significant bits, followed by the high 12 bits of the time
clock_seq_hi_and_res clock_seq_low 2 1-3 bit "variant" in the most significant bits, followed by the 13-15 bit clock sequence
node 6 the 48-bit node id
如果您想要最后16位(2个字节,4个十六进制值),只需反转数组
Array.Reverse(buffer, 0, buffer.Length);
return BitConverter.ToUInt16(buffer, 0);
注意 您正在做的事情非常令人怀疑,我真的认为您需要重新考虑您的设计