開始
數字有大有小,用多少字節表示呢?
本文描述的方案,采用變化的長度。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月,該方案尚未實現,你可以自己動手實現,并應用于項目之中。