要想让文本和二进制混合存储,有两套方案:
①以文本为主,插入二进制数据
②以二进制为主,区分文本和二进制数据段
第一套方案的例子:
时间戳=[....],这是一段64位二进制数据。
在这句话中,以二进制形式储存时间戳,紧凑。
对UTF-8编码进行修改,得到能够混合存储的编码。
0×××××××
,UTF-8一字节模式
110××××× 10××××××
,UTF-8双字节模式
1110×××× 10×××××× 10××××××
,UTF-8三字节模式
11110××× 10×××××× 10×××××× 10××××××
,UTF-8四字节模式
以上是字符模式。
111110×× ×××××××× [data]
,立即数模式
10个×能表达[0, 1K),将它加一,能表达[1, 1K]的范围。在立即数模式下,用2字节记录长度len-1,再写下长度为len的data。data最长为1KB。
111111××
,这里还有4个码位,保留。
既然设计为保存1KB数据,这套方案可以命名为UTF-8_1KB。