質問

次のブロックはハフマンブロック・マーカーによってネストされている

-HUFF---------------------------------------------------------------------0084-
  10    0    1    2    4    3    4    6    5    6    8    a    9    4    2    3
   0    1    2   11    0    3    4   21    5   12   31    6   41   51   61   13
  22   71   81   91   a1   14   32   b1   d1   f0   15   23   35   42   b2   c1
   7   16   24   33   52   72   73   e1   25   34   43   53   62   74   82   94
  a2   f1   26   44   54   63   64   92   93   c2   d2   55   56   84   b3   45
  83   46   a3   e2
-------------------------------------------------------------------------------

0084の整数として、テーブルの長さであり、ここで、ブロックに含まれていない

JPEG規格に従って、最初のアドレスはaparentlyそれ宛先0(0×10)でACテーブルなる

とaparently以降、それはハフマンテーブルがありますから。

だから、どのようにそれはデコードのですか?

役に立ちましたか?

解決

0x10の後の次の16のバイトは、それぞれ長さのどのように多くのコードを教えてくれ。あなたの例では、長さ1ビットの0のコード、長さ2ビットの1つのコード、長さ3ビットの2つのコード、長さ4ビットの4つのコード、長さ5ビットの3つのコード、があるように。

次いで、これらを順に、これらのコードにより符号化された値が続きます。再びあなたの例から:

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top