是否有可能或者是否有任何重载来获得少于32个字符的GUID? 目前我正在使用此声明,但它给我错误
string guid = new Guid("{dddd-dddd-dddd-dddd}").ToString();
我想要一个20个字符的密钥
答案 0 :(得分:4)
您可以使用ShortGuid。 Here is an example实施。
在URL或最终用户可见的其他位置使用ShortGuids是很好的。
以下代码:
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);
}
答案 1 :(得分:2)