c#:将hex转换为GUID

时间:2011-03-22 01:06:45

标签: c# guid

C#中有没有办法将HEX转换为GUID?

示例:

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

4 个答案:

答案 0 :(得分:2)

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

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

// hex == "ca761232ed4211cebacd00aa0057b223"

Guid guid = new Guid(hex);

另请参阅:ParseParseExactTryParseTryParseExact

答案 1 :(得分:2)

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

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

//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);

答案 2 :(得分: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块中包装第一个,或者先自己检查格式(例如使用Regex)。

编辑:

你编辑过的问题无法完成,你无法将一夸脱放入一品脱玻璃。对于将近3个Guids,有足够的信息。

答案 3 :(得分:1)

我怀疑以下应该可以解决问题:

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

当然,如果str格式不正确,你需要一个try catch块。