从字节数组中读取可变长度代码[c#]

时间:2011-05-01 00:55:41

标签: c# algorithm gif

我有一些数字,使用可变长度代码以字节数组编码。 实际上它是GIF89a的图像数据,我必须解码。

因为用于GIF的LZW压缩创建了一系列可变长度代码,每个代码在3到12位之间,所以这些代码必须重新形成一系列8位字节,这些字节将是实际存储或传输的字符。这些代码形成一个比特流,好像它们从右到左打包,然后一次取出8比特输出。 假设每个字符的字符数组为8位,并使用5位代码 打包,示例布局类似于:

     +---------------+
  0  |               |    bbbaaaaa
     +---------------+
  1  |               |    dcccccbb
     +---------------+
  2  |               |    eeeedddd
     +---------------+
  3  |               |    ggfffffe
     +---------------+
  4  |               |    hhhhhggg
     +---------------+
           . . .
     +---------------+
  N  |               |
     +---------------+

如何将其转换为普通[ex。整数]格式使用c#。一些功能?

另外,我无法理解如何识别 - 当这个数字的大小(以位为单位)增加时(+1到大小)?我只知道第一个数字的大小?

1 个答案:

答案 0 :(得分:2)

您想使用BitStream。请参阅http://www.codeproject.com/KB/cs/bitstream.aspx以获取一个好例子。