C#中有什么方法可以将HEX转换为GUID吗?c#:将十六进制转换为GUID
例子:
我想创建一个价值等于一个GUID来 0xa145ce546fe5bbcf1745491b50a4233d19b8223c0a743cad6847142df8b63821640beeabe82824b7d2bf507cb487
C#中有什么方法可以将HEX转换为GUID吗?c#:将十六进制转换为GUID
例子:
我想创建一个价值等于一个GUID来 0xa145ce546fe5bbcf1745491b50a4233d19b8223c0a743cad6847142df8b63821640beeabe82824b7d2bf507cb487
的Guid(string)构造函数可以在几种格式解析字符串的GUID,如:
string hex = Guid.NewGuid().ToString("N");
// hex == "ca761232ed4211cebacd00aa0057b223"
Guid guid = new Guid(hex);
我怀疑下面应该做的伎俩:
Guid g = new Guid(str); // Where str is the hex string
当然,你需要的情况下,STR它周围的try catch块没有很好地形成。
如果您有一个十六进制字符串,则可以使用Guid以及Parse和ParseExact的几个构造函数。
编辑:鉴于您的编辑,你可以使用一个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);
还有一个替代[TryParse](http://msdn.microsoft.com/en-us/library/system.guid.tryparse.aspx) – 2011-03-22 01:16:18
如果你知道这是一个有效的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。
什么是“HEX”? – dtb 2011-03-22 01:08:04
示例输入会很好。 “HEX”可能意味着很多东西。它是否在正确的GUID字符串形式的HEX?还是只是一系列没有“ - ”分隔符的HEX? – 2011-03-22 01:09:31
GUID是一个128位的值。你的例子是waaaaaaay更多的位。没有与该示例相同的GUID。 – dtb 2011-03-22 01:14:17