存储类型(store)的格式如下,
0 1 2 3 4...
+---+---+---+---+================================+
| LEN | NLEN |... LEN bytes of literal data...|
+---+---+---+---+================================+
每个‘+---+’代表一个字节,‘+==============+’代表一定数量的字节。LEN表示本块共含有多少个字节的数据(该块没有压缩,所以对应的数据仍然是字节流),NLEN是LEN的补充(其实我也不知道NLEN是怎么使用的,没怎么见过,这里贴上RFC原文“NLEN is the one's complement of LEN”)。后面就是被存储的原始数据了。
很明显,存储类型全部是字节流,块首部只有三比特,而且块首部后面紧跟着就是以该格式表示的存储类型的数据了,对于这种情况,实际的处理方式就是,块首部后面如果还不够一个字节,那么剩下的不够一个字节的那几个比特就全部忽略,实际的数据从一个全新的字节开始。简而言之,就是块首部是比特流而被存储的数据是字节流,这两种流要拼在一起,为了让比特流是字节的整数倍,因此可能要浪费几个比特。例如,块首部只用了一个字节的三比特,还有五比特可用,这个时候,如果使用存储类型,那么这五比特就浪费了,数据会从下一个字节开始。如下图所示,