3.2.4. Несжатые блоки (BTYPE=00)
Любые биты ввода до следующей границы байта игнорируются. Остальная часть блока содержит следующую информацию:
0 1 2 3 4... +---+---+---+---+==================================+ | LEN | NLEN |... LEN байт литеральных данных...| +---+---+---+---+==================================+
LEN количество байт данных в блоке. NLEN дополнение LEN до единиц.
3.2.5. Сжатые блоки (коды для длины и расстояния)
Как отмечалось выше, кодируемые блоки данных формате "deflate" состоят из последовательностей символов, из трех концептуально различных алфавитов: либо литеральные байты из алфавита значений байта (0.. 255), либо пара <длина, обратное расстояние>, где длина находится в диапазоне до 258 а расстояние от 1 до 32,768. Фактически, литеральный алфавит и алфавиты длины слиты в единый алфавит (0.. 285), где значения 0.. 255 представляют литеральные байты, значение 256 указывает конец-блока, а значения 257.. 285 представляют коды длины (возможно вместе с дополнительными битами после кода символа) следующим образом:
Extra Extra Extra Code Bits Length(s) Code Bits Lengths Code Bits Length(s) ---- ---- ------ ---- ---- ------- ---- ---- ------- 257 0 3 267 1 15,16 277 4 67-82 258 0 4 268 1 17,18 278 4 83-98 259 0 5 269 2 19-22 279 4 99-114 260 0 6 270 2 23-26 280 4 115-130 261 0 7 271 2 27-30 281 5 131-162 262 0 8 272 2 31-34 282 5 163-194 263 0 9 273 3 35-42 283 5 195-226 264 0 10 274 3 43-50 284 5 227-257 265 1 11,12 275 3 51-58 285 0 258 266 1 13,14 276 3 59-66
Дополнительные биты (extra bits) должны интерпретироваться как машинные целые, хранимые с наиболее значимым битом первым, т.е., биты 1110 представляют значение 14.
Extra Extra Extra Code Bits Dist Code Bits Dist Code Bits Distance ---- ---- ---- ---- ---- ------ ---- ---- -------- 0 0 1 10 4 33-48 20 9 1025-1536 1 0 2 11 4 49-64 21 9 1537-2048 2 0 3 12 5 65-96 22 10 2049-3072 3 0 4 13 5 97-128 23 10 3073-4096 4 1 5,6 14 6 129-192 24 11 4097-6144 5 1 7,8 15 6 193-256 25 11 6145-8192 6 2 9-12 16 7 257-384 26 12 8193-12288 7 2 13-16 17 7 385-512 27 12 12289-16384 8 3 17-24 18 8 513-768 28 13 16385-24576 9 3 25-32 19 8 769-1024 29 13 24577-32768