GUID的格式是否始终相同?

GUID你得到的东西像aaaef973-d8ce-4c92-95b4-3635bb2d42d5

总是一样的吗? 是否总是具有以下格式

8个字符“ – ”,4个字符“ – ”,4个字符“ – ”,4个字符“ – ”,12个字符

我问,因为我需要将没有“ – ”的GUID转换为带有“ – ”和副签证的GUID。

没有; 还有其他格式,例如您列出的格式,除了大括号。 还有更复杂的格式。 以下是MSDN列出的一些格式:

UUID格式

  • 32位数: 00000000000000000000000000000000 (N)
  • 由连字符分隔的32位数字: 00000000-0000-0000-0000-000000000000 (D)
  • 用连字符分隔的32位数字,用大括号括起来: {00000000-0000-0000-0000-000000000000} (B)
  • 由连字符分隔的32位数,括在括号中: (00000000-0000-0000-0000-000000000000) (P)
  • 括号中包含四个hex值,其中第四个值是八个hex值的子集,也包含在大括号中: {0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} (X)

– MSDN

你应该简单地依赖它是32个hex字符,可以有多种方式来呈现它。 查看Wikipedia文章以获取更多信息,包括对它们如何编写的描述。

对于你的转换,你应该真正依赖静态Guid.Parse()方法 。 使用你的例子和icktoofay答案的混合 ,这很好地工作:

  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.ToString()方法和一个已建立的格式代码。

大多数情况下,GUIDS是32个字符的hex字符串,例如{21EC2020-3AEA-1069-A2DD-08002B30309D} (除非它们在Base-64中编码),并且通常存储为128位整数。 但是,它们并不总是有连字符。