Будьте осторожны: хотя строковые представления для .NET Guid и (RFC4122) UUID идентичны, формат хранения не совпадает. .NET торгует байтами с младшим порядком байтов для первых трех Guid
частей .
Если вы передаете байты (например, как base64), вы не можете просто использовать Guid.ToByteArray()
и кодировать его. Вам нужно будет Array.Reverse
первые три части (данные 1-3).
Я делаю это так:
var rfc4122bytes = Convert.FromBase64String("aguidthatIgotonthewire==");
Array.Reverse(rfc4122bytes,0,4);
Array.Reverse(rfc4122bytes,4,2);
Array.Reverse(rfc4122bytes,6,2);
var guid = new Guid(rfc4122bytes);
См. этот ответ , чтобы узнать подробности реализации .NET.
Редактировать : Спасибо Джеффу Уокеру, Code Ranger, за то, что он указал, что внутренние компоненты не имеют отношения к формату байтового массива, который входит и выходит из конструктора байтового массива, и ToByteArray()
.