多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 2.6.2 压缩列表结点的结构 每个压缩列表可以保存一个字节数组或一个整数值: - 其中字节数组可以是以下3种长度中的一种: - 长度小于等于63(2<sup>6</sup> - 1)字节 - 长度小于等于16383(2<sup>14</sup> - 1) - 长度小于等于4294967295(2<sup>32</sup> - 1) - 其中整数可以是以下6种长度中的一种: - 4位长,位于0到12之间的无符号整数 - 1字节长的有符号整数 - int16_t类型的整数 - int32_t类型的整数 - int64_t类型的整数 ---- 以下是压缩列表结点的属性: - previous_entry_length:压缩列表中前一结点的长度(字节数),为1字节或5字节: - 如果小于254字节,则为1字节 - 如果大于等于254字节,则用1字节作为标识(值为254),4字节标识其长度 - encoding:记录了结点的content属性所保存数据的类型以及长度: - 1字节,值得最高位为`11`的表示整数 - 1字节、2字节或5字节长,值的最高位为`00`、`01`或`10`的表示字节数组 - content:保存结点的值,值的类型和长度由encoding属性决定。 以下是整数和字节数组的编码: 编码 | 编码长度 | conten属性保存的值的类型 ---- | ---- | ---- 11 000000 | 1字节 | int16_t类型的整数 11 010000 | 1字节 | int32_t类型的整数 11 100000 | 1字节 | int64_t类型的整数 11 110000 | 1字节 | 24位有符号整数 11 111110 | 1字节 | 8位有符号整数 11 11xxxx | 1字节 | 没有相应的content属性,xxxx四位保存了0到12间的整数 00 bbbbbb | 1字节 | 长度小于等于63的字节数组 01 bbbbbb xxxxxxxx | 2字节 | 长度小于等于16383的字节数组 10 ______ aaaaaaaa bbbbbbbb cccccccc dddddddd | 5字节 | 长度小于等于4294967295的字节数组 ---- 示例: previous_entry_length | encoding | content | 说明 ---- | ---- | ---- | ---- ... | 00001011 | "hello world" | 长度为11的字节数组 ... | 11000000 | 10086 | int16_t类型的整数