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位整数。 但是,它们并不总是有连字符。