【问题标题】:How many URL's for this configuration?这个配置有多少个 URL?
【发布时间】:2014-08-27 08:44:51
【问题描述】:

我正在使用您的带有 Base32 编码的网址在短信中发送缩短的链接。 URL 前面有一条消息,因为短信限制为 160 个字符,而我的消息大约是 140 个字符,所以我需要非常小心字符数。

我的问题是这样的;如何使用 base32 编码计算在 4 个字符的限制下可以容纳多少个 URL?

【问题讨论】:

    标签: encoding url-shortener base32


    【解决方案1】:

    我不确定你是否在问permutations

    base32 编码中的每个字符可以有 32 个值([A - Z] 和 [2 - 7])。如果您使用 http://yoursite.com/xxxx 形式,其中 xxxx 是短 URL,四位数字可以包含 32 4 个排列。也就是说,1,048,576

    如果您还包含三位数的 URL(例如 http://yoursite.com/xxx),则可以有 32 3 个排列。也就是说,32,768。再加上四位数的 URL,那么您总共得到 1,081,344

    如果您还使用 2 位网址(例如 http://yoursite.com/xx),您将获得额外的 1,024 个网址,总计 1,082,368。包括个位数(例如http://yoursite.com/x)会给你额外的32。总计1,082,400


    但您不必只使用 [A - Z] 和 [2 - 7]。根据RFC3986,您可以使用字符ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=。那是84个不同的字符。有了这个:

    http://yoursite.com/xxxx               49,787,136
    http://yoursite.com/xxx added          50,379,840 (+592,704)
    http://yoursite.com/xx added           50,386,896 (+  7,056)
    http://yoursite.com/x added            50,386,980 (+     84)
    

    即使您省略字符 -._~:/?#[]@!$&'()*+,;=,因为它们确实不适合缩短的 URL,您仍然会得到 62 个字符。有了这个:

    http://yoursite.com/xxxx               14,776,336
    http://yoursite.com/xxx added          15,014,664 (+238,328)
    http://yoursite.com/xx added           15,018,508 (+  3,844)
    http://yoursite.com/x added            15,018,570 (+     62)
    

    【讨论】:

    • 感谢您的全面回答。很好,除了你说 A-Z 是基数 32 的一部分。我认为你的意思是 a-z。无论如何,当你帮助我理解它时,我会奖励你。
    • 谢谢@Michael。我决定使用大写字母,因为RFC4648: The Base16, Base32, and Base64 Data Encodings 使用大写字母。请参阅 RFC 的表 3。
    猜你喜欢
    • 2017-02-22
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    相关资源
    最近更新 更多