c #: конвертировать гекс в GUID - PullRequest
0 голосов
/ 22 марта 2011

Есть ли какой-нибудь способ в C # преобразовать HEX в GUID?

Пример:

Я хочу создать GUID со значением, равным 0xa145ce546fe5bbcf1745491b50a4233d19b8223c0a743cad6847142df8b6382b85075075050850850825850825850850608506085085050850508508507

Ответы [ 4 ]

2 голосов
/ 22 марта 2011

Если вы знаете, что это правильный 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 или сначала проверить формат самостоятельно (например, с помощью регулярного выражения).

Редактировать:

Ваш отредактированный вопрос не может быть сделан, вы не можете поместить кварта в стакан с пинтами.В нем достаточно информации для почти трех гидов.

2 голосов
/ 22 марта 2011

Существует несколько конструкторов для 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);
2 голосов
/ 22 марта 2011

Конструктор Guid (строка) может анализировать строку с GUID в нескольких форматах, например:

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

// hex == "ca761232ed4211cebacd00aa0057b223"

Guid guid = new Guid(hex);

См. Также: Parse , ParseExact, TryParse , TryParseExact

1 голос
/ 22 марта 2011

Я подозреваю, что следующее должно помочь:

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

Конечно, вам понадобится блок try catch, если str не сформирован правильно.

...