Skip to main content

附录A. 预定义代码的解码表 (Decoding Tables for Predefined Codes)

本附录包含预定义字面量长度、匹配长度和偏移量码的FSE解码表。这些表是使用第4.1.1节中给出的算法构建的。此处的表可用作示例,以交叉检查实现是否正确构建了其解码表。

A.1. 字面量长度码表 (Literals Length Code Table)

解码表使用6位精度对数(64个状态)。

short literalsLength_defaultDistribution[36] =
{ 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1,
-1,-1,-1,-1
};

A.2. 匹配长度码表 (Match Length Code Table)

解码表使用6位精度对数(64个状态)。

short matchLengths_defaultDistribution[53] =
{ 1, 4, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,-1,-1,
-1,-1,-1,-1,-1
};

A.3. 偏移量码表 (Offset Code Table)

解码表使用5位精度对数(32个状态)并支持最大N值为28,允许最大偏移量值为536,870,908。

如果压缩块中的任何序列需要大于此的偏移量,则无法使用默认分布来表示它。

short offsetCodes_defaultDistribution[29] =
{ 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,-1,-1,-1,-1,-1
};

完整的状态表包括State、Symbol、Number_Of_Bits和Base列,详细信息请参见RFC 8878完整文档。