我试图计算出我可以用 5 个 base64 字符、6 个字符等编码的无符号整数的估计值。
通过编程方法我发现我可以编码
2^28 - 1 = 268,435,455
有 6 个字符和
2^35 - 1 = 34,359,738,368
有 7 个字符。
(-1 因为我从 uint 1 开始)
不过,我正在努力概括这一点,因为我会假设它从 开始,2^8 = 256但我不明白我是如何结束的28和35。
这是我在 Go 中的实现
func Shorten(num uint64) string {
buf := make([]byte, binary.MaxVarintLen64)
n := binary.PutUvarint(buf, num)
b := buf[:n]
encoded := base64.URLEncoding.EncodeToString(b)
return strings.Replace(encoded, "=", "", -1)
}
还
0 -> AA
128 -> gAE
16384 -> gIAB
2097152 -> gICAAQ
268435456 -> gICAgAE
所以看起来它以 7 个增量上升:2^7、2^14、2^21 等,但为什么是 7?
小怪兽爱吃肉
相关分类