GUID的格式是否始终相同?

时间:2011-10-15 02:49:17

标签: c# string guid

GUID你会得到类似aaaef973-d8ce-4c92-95b4-3635bb2d42d5

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

8 char“ - ”,4 char“ - ”,4 char“ - ”,4 char“ - ”,12 char

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

3 个答案:

答案 0 :(得分:25)

没有;还有其他格式,例如您列出的格式,但大括号除外。还有更复杂的格式。以下是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)
  •   
  • 用大括号括起来的四个十六进制值,其中第四个值是八个十六进制值的子集,也用大括号括起来:{0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}(X)
  •   
     

- MSDN

答案 1 :(得分:4)

你应该简单地依赖它是32个十六进制字符,可以有多种方式来呈现它。查看Wikipedia article以获取更多信息,包括对它们如何编写的说明。

对于您的转化,您应该真正依赖静态Guid.Parse() methods。使用您的示例和icktoofay's answer中的示例混合,这很有效:

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

答案 2 :(得分:0)

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