微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

保证唯一性的Guid的最短编码

如何解决保证唯一性的Guid的最短编码

| 当前,当我们需要唯一的url时,我们会使用base 64对Guid进行编码。 问题是,在保证唯一性的同时,我们可以少于22个字符吗?
        var id = Guid.NewGuid().ToByteArray();
        var idString = Convert.ToBase64String(id)
            .Replace(\"=\",\"\")
            .Replace(\"+\",\"-\")
            .Replace(\"/\",\"_\");
目前,这会产生类似
TwfQfblSTEuF7rLabS2bjA
的字符串     

解决方法

        Base64每个字符编码6位。 GUID有128位。因此,您需要128/6 = 21.33个字符。不能做分数,22是硬性下限。通过每个字符编码更多位,您只能获得更少的字符。这使URL编码变得粗糙,我想不出为什么要这样做的一个体面的原因。     ,        URL中仅有效的ASCII字符(真实ASCII,字节> = 128的任何字符)无效。对于您可以获得的字节字符串,Base64已经非常接近最短的URL表示形式。如果您想真正学究,可以使用所有URL有效字符而不是64(总共80多个)来剃掉一个或两个字符。 我会说只使用base64。它已经足够接近了。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。