目前,当我们需要唯一的 URL 时,我们使用 Base 64 编码我们的 Guid。
问题是,我们能否在保证唯一性的同时缩短 22 个字符?:
var id = Guid.NewGuid().ToByteArray();
var idString = Convert.ToBase64String(id)
.Replace("=", "")
.Replace("+", "-")
.Replace("/", "_");
目前这将产生一个类似 TwfQfblSTEuF7rLabS2bjA
最佳答案
Base64 对每个字符进行 6 位编码。一个 GUI 有 128 位。因此,您需要 128/6 = 21.33 个字符。不能做小数,22是硬下限。您只能通过对每个字符编码更多位来获得更少的字符。这使得 URL 编码变得很糟糕,我想不出你想要这样做的合理理由。
关于.net - 保证唯一性的最短可能的 Guid 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478888/