Я пишу парсер / модификатор / разборщик JPEG. Во-первых, чтобы убедиться, что мы используем ту же терминологию, я включаю
определение, взятое из очень полезного источника
DHT( Define Huffman Table) marker:
Field Size Description
Marker Identifier 2 bytes 0xff, 0xc4 to identify DHT marker
Length 2 bytes This specify length of Huffman table
HT information 1 byte bit 0..3 : number of HT (0..3, otherwise error)
bit 4 : type of HT, 0 = DC table, 1 = AC table
bit 5..7 : not used, must be 0
Number of Symbols 16 bytes Number of symbols with codes of length 1..16,
the sum(n) of these bytes is the total number of
codes, which must be <= 256
Symbols n bytes Table containing the symbols in order of
increasing code length ( n = total number of
codes ).
Мой вопрос:
Символы должны быть упорядочены путем увеличения длины кода. Но в пределах каждой длины кода они должны быть упорядочены (например, по возрастанию значения).
Причина, по которой я спрашиваю, состоит в том, что моя таблица, сгенерированная из частот, собранных из данных сканирования AC, дает правильные битовые длины, но они не в порядке возрастания значений в дереве (при чтении в порядке обхода в глубину). Мне нужно упорядочить их и восстановить дерево, чтобы получить тот же битовый шаблон, что и при написании и чтении таблицы.
Я подозреваю, что это потому, что в моей процедуре записи я специально упорядочиваю символы по битам, а затем по значению. Если упорядочение по значению не требуется, я могу снять накладные расходы (в коде и во время выполнения).