Декодирование блока Хаффмана JPEG (таблица)

Вы можете создать большое дерево наследования просто для изменения одного из N поведения. И вы можете создать второе большое дерево наследования, чтобы изменить второе из N поведения.

Но вы также можете разгрузить свое дерево, создав маленькие деревья стратегий.

Так что, если вы заметили, что добавляете все больше и больше классов просто для того, чтобы добавить некоторые изменения в какое-то поведение - пришло время снабдить ваши классы стратегиями.

13
задан caf 14 October 2009 в 03:09
поделиться

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
21
ответ дан 1 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: