2011-03-22 126 views
0

C#中有什么方法可以将HEX转换为GUID吗?c#:将十六进制转换为GUID

例子:

我想创建一个价值等于一个GUID来 0xa145ce546fe5bbcf1745491b50a4233d19b8223c0a743cad6847142df8b63821640beeabe82824b7d2bf507cb487

+1

什么是“HEX”? – dtb 2011-03-22 01:08:04

+1

示例输入会很好。 “HEX”可能意味着很多东西。它是否在正确的GUID字符串形式的HEX?还是只是一系列没有“ - ”分隔符的HEX? – 2011-03-22 01:09:31

+2

GUID是一个128位的值。你的例子是waaaaaaay更多的位。没有与该示例相同的GUID。 – dtb 2011-03-22 01:14:17

回答

2

Guid(string)构造函数可以在几种格式解析字符串的GUID,如:

string hex = Guid.NewGuid().ToString("N"); 

// hex == "ca761232ed4211cebacd00aa0057b223" 

Guid guid = new Guid(hex); 

参见: ParseParseExactTryParseTryParseExact

1

我怀疑下面应该做的伎俩:

Guid g = new Guid(str); // Where str is the hex string 

当然,你需要的情况下,STR它周围的try catch块没有很好地形成。

2

如果您有一个十六进制字符串,则可以使用Guid以及ParseParseExact的几个构造函数。

编辑:鉴于您的编辑,你可以使用一个BigInteger,但不知道为什么想要一个GUID,很难给出一个更好的答案。

//untested 
var bytes = new byte[] {Oxa,1,4,5,Oxc,Oxe,5,4,6,Oxf,Oxe,5,Oxb,Oxb,Oxc,Oxf,1,7,4,5,4,9,1,Oxb,5,0,Oxa,4,2,3,3,Oxd,1,9,Oxb,8,2,2,3,Oxc,0,Oxa,7,4,3,Oxc,Oxa,Oxd,6,8,4,7,14,2,Oxd,Oxf,8,Oxb,6,3,8,2,1,6,4,0,Oxb,Oxe,Oxe,Oxa,Oxb,Oxe,8,2,8,2,4,Oxb,7,Oxd,2,Oxb,Oxf,5,0,7,Oxc,Oxb,4,8,7}; 
var bigInteger = new BigInteger(bytes); 
+0

还有一个替代[TryParse](http://msdn.microsoft.com/en-us/library/system.guid.tryparse.aspx) – 2011-03-22 01:16:18

2

如果你知道这是一个有效的GUID在这些格式之一:

dddddddddddddddddddddddddddddddd 
dddddddd-dddd-dddd-dddd-dddddddddddd 
{dddddddd-dddd-dddd-dddd-dddddddddddd} 
(dddddddd-dddd-dddd-dddd-dddddddddddd) 
{0xdddddddd, 0xdddd, 0xdddd,{0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd}} 

然后new Guid(hexstring)

如果你不能肯定,然后用.NET4.0,你可以使用:

Guid g = default(Guid); 
bool success = Guid.TryParse(hexstring, out g); 

否则,你就必须包装中的第一个try块,或者先检查自己的格式(例如用正则表达式)。

编辑:

你编辑的问题不能做,不能容纳一夸脱为一品脱玻璃。这里有足够多的信息用于近3个Guid。