【发布时间】:2016-03-19 23:26:24
【问题描述】:
我最近在考虑 GUID,因此我尝试了以下代码:
Guid guid = Guid.NewGuid();
Console.WriteLine(guid.ToString()); //prints 6d1dc8c8-cd83-45b2-915f-c759134b93aa
Console.WriteLine(BitConverter.ToString(guid.ToByteArray())); //prints C8-C8-1D-6D-83-CD-B2-45-91-5F-C7-59-13-4B-93-AA
bool same=guid.ToString()==BitConverter.ToString(guid.ToByteArray()); //false
Console.WriteLine(same);
您可以看到所有字节都在那里,但是当我使用BitConverter.ToString 时,其中一半的顺序错误。这是为什么呢?
【问题讨论】:
-
盲目猜测:BitConverter 和 ByteArray 不能很好地协同工作?
-
guid.ToByteArray()返回一个包含此实例值的 16 元素字节数组。 -
"其中一半的顺序错误" - 错误取决于您认为正确的顺序。字节以 不同的 顺序打印 - 这更正确。这将直接导致一个问题,可能是什么原因?好的术语是解决问题的一半。