我刚刚生成了数百万个 GUID,将它们变成了一个字符串并得到了长度……它始终是相同的。在转换为字符串时,我可以依赖这个固定长度的 GUID 吗?
此外,GUID 的中间数字是否始终如屏幕截图所示“4”?
最佳答案
是的,长度是固定的,是的,当您使用标准的 tostring 格式时,中间的数字总是 4。 GUID 中的一些位(几乎在任何非 Windows 的地方都称为 UUID)是固定的,用于指示诸如版本等内容。
http://en.wikipedia.org/wiki/Uuid
编辑 我应该补充一点,“4”仅适用于根据 .NET 中实现的 Guid.NewGuid 算法生成的 Guid。没有什么可以阻止您采用任意字节 [16] 并将其转换为 Guid。因此,对于 .Net 中算法的当前实现,您只能指望它是 4。如果您从其他来源获取 Guid,则不能寄希望于 4。对 .Net 或可能是 Windows 的更新(取决于 .Net 使用自己的生成器还是 Windows 的生成器)可能会更改 GUID 的固定数字
例如以下是完整的工作代码,不会有 4 的位置:
var rand = new Random();
var byteArray = new byte[16];
rand.NextBytes(byteArray);
var g = new Guid(byteArray);
关于c# - 关于 GUID 的 : Are they always fixed in length, 的问题,中间的数字总是 4 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3740186/