二进制串不会比十进制串长太多

思考用更大的字符集来压缩一个字符串的问题,会发现,串长变短的倍数会大大小于字符集大小比例。

以二进制串和十进制串举例。同样一个数,用二进制表示法会比十进制表示法长多少?

解这个方程式*(感谢codecogs的公式支持):

公式1

二进制串表示法的长度只是十进制的大约3倍多点,也就是说,用一个5倍大小的字符集能够把字符串长度减少到约三分之一更少一些。

当字符集进一步增大时,这个“压缩比”的差距会更明显。

比如,考虑对一个使用字符集[0-9A-Za-z]共62个字符表示的私钥串,使用汉字常用字共约3500字,大概56倍于62字符集,但是仅能够把私钥串长度(字符长度)缩短约二分之一(1.977分之一)。即使扩充到7000通用字,也不过是约2.14分之一。

而且,如果考虑到一个汉字的视觉宽度差不多是英文和数字的两倍,那么编码串的长度其实就没有太大差别甚至更长了。

附:
[*] 公式1的latex代码:

\begin{align*}
& 2^m = 10^n \\ 
\Rightarrow\quad & mln2 = nln10 \\ 
\Rightarrow\quad & m:n = \frac{ln10}{ln2} \approx 3.322
\end{align*}

你可能感兴趣的:(二进制串不会比十进制串长太多)