Guid.ParseExact抛出FormatException C#十六进制

时间:2014-03-23 20:20:49

标签: c# guid

我无法使用C#中的以下格式使用Guid.parseGuid.parseExact来创建新的Guid。对于十六进制,Guid.parseExact的格式是什么? (我实际上还没有在网上看到一个有效的“格式”实现,但是对于以下格式的十六进制值)

或者,是否有GUID转换器?这样我就可以将这样的格式转换为“常规”十进制格式并更容易解析?

GUID是{{0x1790c9ecL,0x47d5,0x4df3,{{0xb5,0xaf,0x9a,0xdf,0x3c,0xf2,0x3e,0x48}}}}

Guid DEVINTERFACE = Guid.ParseExact(
    "{{0x4390c9ecL,0x4125,0x45f3,{{0x55,0xbf,0x9a,0xdf,0x3c,0x42,0x4e,0x42}}}}",
    "X");

1 个答案:

答案 0 :(得分:4)

括号过多:

var g = Guid.ParseExact(
    "{0x1790c9ec,0x47d5,0x4df3,{0xb5,0xaf,0x9a,0xdf,0x3c,0xf2,0x3e,0x48}}", "X");

请注意,如果你这样做:

string s = g.ToString("X");

然后你会回到你的开始:

"{0x1790c9ec,0x47d5,0x4df3,{0xb5,0xaf,0x9a,0xdf,0x3c,0xf2,0x3e,0x48}}"

基本上,您对"X"格式的理解不正确。

虽然就个人而言,我强烈建议更正常的陈述:

"1790c9ec-47d5-4df3-b5af-9adf3cf23e48" // format "D"

或:

"1790c9ec47d54df3b5af9adf3cf23e48" // format "N"
  

OR是否有GUID转换器?这样我就可以将这样的格式转换为"常规"十进制格式和解析更容易?

Guids几乎从不以十进制格式显示;这里唯一的区别是大括号,逗号,短划线和前导0x前缀。 .NET中所有Guid格式的数据都是十六进制的。