C# GUID的格式是否始终相同?
GUID您会得到类似aaaef973-d8ce-4c92-95b4-3635bb2d42d5的内容 总是一样吗?它是否总是具有以下格式 8个字符“-”,4个字符“-”,4个字符“-”,4个字符“-”,12个字符C# GUID的格式是否始终相同?,c#,string,guid,C#,String,Guid,GUID您会得到类似aaaef973-d8ce-4c92-95b4-3635bb2d42d5的内容 总是一样吗?它是否总是具有以下格式 8个字符“-”,4个字符“-”,4个字符“-”,4个字符“-”,12个字符 我这样问是因为我需要将不带“-”的GUID转换为带“-”和visa的GUID;除大括号外,还有其他格式,例如列出的格式。还有更复杂的格式。以下是MSDN列表的一些格式: UUID格式 32位:00000000000000000000(N) 用连字符分隔的32位数字:00000000-0
我这样问是因为我需要将不带“-”的GUID转换为带“-”和visa的GUID;除大括号外,还有其他格式,例如列出的格式。还有更复杂的格式。以下是MSDN列表的一些格式: UUID格式
- 32位:
(N)00000000000000000000
- 用连字符分隔的32位数字:
(D)00000000-0000-0000-0000-000000000000
- 用连字符分隔的32位数字,用大括号括起来:
(B){00000000-0000-0000-0000-000000000000}
- 用连字符分隔的32位数字,用括号括起来:
(P)(00000000-0000-0000-0000-000000000000)
- 用大括号括起来的四个十六进制值,其中第四个值是也用大括号括起来的八个十六进制值的子集:
(X){0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
大多数情况下,guid是32个字符的十六进制字符串,如
{21EC2020-3AEA-1069-A2DD-08002B30309D}
(除非它们以Base-64编码),通常存储为128位整数。不过,它们并不总是有连字符。您只需依赖它是32个十六进制字符,可以有多种方式来表示它。有关更多信息,请查看,包括它们通常如何编写的说明
对于您的转换,您应该真正依赖于静态。将您的示例与中的示例混合使用,可以很好地实现这一点:
var z = Guid.Parse("aaaef973-d8ce-4c92-95b4-3635bb2d42d5");
z = Guid.Parse("{aaaef973-d8ce-4c92-95b4-3635bb2d42d5}");
z = Guid.Parse("{0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}");
然后,对于带连字符或不带连字符等的输出,您可以将该方法与一个已建立的格式代码一起使用。如果它存储为带大括号的字符串,则有多少个字符?这并不是说不能以其他格式保存,有或没有大括号、空格或连字符。我很好奇为什么guid是以8,4,4,12为单位呈现的,而不是(例如)4组8为单位呈现的,以及为什么
“X”
格式的格式如此奇怪。最后8个字节有什么特别之处,需要以不同的方式呈现?@Dai:看到了吗