ограничение количества символов в GUID - PullRequest
5 голосов
/ 12 января 2012

возможно или есть какая-то перегрузка, чтобы получить менее 32 символов GUID? в настоящее время я использую это утверждение, но оно дает мне ошибку

string guid = new Guid("{dddd-dddd-dddd-dddd}").ToString();

я хочу ключ из 20 символов

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Вы можете использовать ShortGuid. Вот пример реализации.

Приятно использовать ShortGuids в URL или других местах, видимых конечному пользователю.

Следующий код:

Guid guid = Guid.NewGuid();
ShortGuid sguid1 = guid; // implicitly cast the guid as a shortguid
Console.WriteLine( sguid1 );
Console.WriteLine( sguid1.Guid );

Даст вам этот вывод:

FEx1sZbSD0ugmgMAF_RGHw
b1754c14-d296-4b0f-a09a-030017f4461f

Это код для метода кодирования и декодирования:

public static string Encode(Guid guid)
{
   string encoded = Convert.ToBase64String(guid.ToByteArray());
   encoded = encoded
     .Replace("/", "_")
     .Replace("+", "-");
   return encoded.Substring(0, 22);
}

public static Guid Decode(string value)
{
   value = value
     .Replace("_", "/")
     .Replace("-", "+");
   byte[] buffer = Convert.FromBase64String(value + "==");
   return new Guid(buffer);
}
2 голосов
/ 21 февраля 2013
...