开始
数字有大有小,用多少字节表示呢?
本文描述的方案,采用变化的长度。vb是varying bytes的意思,224是表示它特征的一个数。
第一版:
每个字节8比特,最高的1比特用来表示“是否连续”,0表示终止,1表示继续,如:
单字节模式:0×××××××
双字节模式:1××××××× 0×××××××
三字节模式:1××××××× 1××××××× 0×××××××
一直延续下去,理论上说可以表示无穷大。
这一版叫做vb128。
第二版:
为表示0到255做了优化。
单字节模式:0至223
双字节模式:224至255,0×××××××
三字节模式:224至255,1××××××× 0×××××××
也能表示无穷大。
首字节中,224至255是32个数,即5比特。
后边的字节,每个字节表示7比特。
比较:
题目:表示0到255,以及保留继续变大的可能。
解一:表示0到255需要256个字节,要想保留继续变大的可能,需要用双字节、四字节、八字节等。占用空间较大。
解二:采用vb128。前128个数字用1字节,后128个数字用2字节,总共128+2×128=384字节。
解三:采用vb224。前224个数字用1字节,后32个数字用2字节,总共224+2×32=288字节。
比较结果:
解一很占空间,且不能表示无穷大,退出比较。
解三比解二省下384-288=96字节。
总结:
当你需要表示一个数字,却又不能确定数字所占字节数的时候,可以考虑vb224编码。
截止2025年6月,该方案尚未实现,你可以自己动手实现,并应用于项目之中。