【发布时间】:2014-08-27 08:44:51
【问题描述】:
我正在使用您的带有 Base32 编码的网址在短信中发送缩短的链接。 URL 前面有一条消息,因为短信限制为 160 个字符,而我的消息大约是 140 个字符,所以我需要非常小心字符数。
我的问题是这样的;如何使用 base32 编码计算在 4 个字符的限制下可以容纳多少个 URL?
【问题讨论】:
标签: encoding url-shortener base32
我正在使用您的带有 Base32 编码的网址在短信中发送缩短的链接。 URL 前面有一条消息,因为短信限制为 160 个字符,而我的消息大约是 140 个字符,所以我需要非常小心字符数。
我的问题是这样的;如何使用 base32 编码计算在 4 个字符的限制下可以容纳多少个 URL?
【问题讨论】:
标签: encoding url-shortener base32
我不确定你是否在问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)
【讨论】: