.net - 保证唯一性的最短可能的 Guid 编码

标签 .net encoding

目前,当我们需要唯一的 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/

相关文章:

java - DB2 UTF-8 XML C2 85 到换行符转换

c# - 来自 Windows 窗体应用程序的 ASP.NET 身份验证

c# - DataRepeater 控件 WinForms 去除虚线

php - DOCX 编码问题

php - 从 PHP 输出二进制文件作为 Javascript 二进制字符串

php - 从 MS Word 粘贴时 PHP 和撇号的编码问题

c# - 处理套接字服务器中的超时

c# - 验证错误的正确返回类型

c# - 无法使用 GET 请求发送具有此动词类型的内容正文

java - Jasper 报表、子报表和编码