GIF理解图像解码 - Lempel-Ziv-Welch

时间:2013-01-02 20:56:59

标签: gif decoding graphic lzw

我正在尝试构建一些可用于将GIF文件转换为另一种文件格式的代码(我已经知道如何创建。[我正在尝试简化从GIF到GRF的转换 - 打印机图形文件格式。 ])

我正在处理来自维基百科(http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Image_coding)的信息。

有一节介绍从字节转换为9位代码。他们展示的例子是:

9-bit   binary   Bytes
(hex)            (hex)

        00000000  00
100
        0101000|1  51
028
        111111|00  FC
0FF
        00011|011  1B
103
        0010|1000  28
102
        011|10000  70
103
        10|100000  A0
106
        1|1000001  C1
107
         10000011  83
         00000001  01
101
        0000000|1  01

我能够从文件中生成右侧给出的字节。 (我创建了一个完全按照他们在文章中描述的方式创建的文件(3x5,黑色像素在0,0和MSPaint中为1.1)。

我不理解的是他们如何将这些字节转换为9位十六进制代码。

00如何变成100?二进制中的条(|)是什么意思?

1 个答案:

答案 0 :(得分:0)

刚刚意识到发生了什么......

         00000000  00        Add the next digit to the beginning - 100000000 = 100
100
         0101000|1  51        Next Digit - 000101000 = 028
028
         111111|00  FC        -011111111 = 0FF
0FF
         00011|011  1B        -100000011 = 103
103
         0010|1000  28        -100000010 = 102
102
         011|10000  70        -100000011 = 103
103
         10|100000  A0        -100000110 = 106
106
         1|1000001  C1        -100000111 = 107
107
         10000011  83
         00000001  01         -100000001 = 101
101
         0000000|1  01