Ответ 1
Следующие 16 байт после 0x10 расскажут, сколько кодов каждой длины. В вашем примере есть 0 кодов длиной 1 бит, 1 код длиной 2 бита, 2 кода длиной 3 бита, 4 кода длиной 4 бита, 3 кода длиной 5 бит и т.д.
Затем за ними следуют значения, закодированные этими кодами, по порядку. Еще раз из вашего примера:
Code length | Number | Symbol(s)
------------+--------+----------
1 bit | 0 |
2 bits | 1 | 0x01
3 bits | 2 | 0x02 0x11
4 bits | 4 | 0x00 0x03 0x04 0x21
5 bits | 3 | 0x05 0x12 0x31
... etc
Затем вы создаете двоичное дерево сверху вниз, назначая символы в порядке. В этом примере вы получите:
Symbol | Code
-------+------
0x01 | 00
0x02 | 010
0x11 | 011
0x00 | 1000
0x03 | 1001
0x04 | 1010
0x21 | 1011
...etc