数据压缩 -- 源码[5]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 luckyjan 的 blog

      while i<>k do begin
        table^[i]:=0;inc(i);
      end;
    end;
  avail:=nchar;mask:=1 shl (15-tablebits);
  for ch:=0 to pred(nchar) do
    begin
      len:=bitlen^[ch];
      if len=0 then
        continue;
      k:=start[len];
      nextcode:=k+weight[len];
      if len<=tablebits then
        begin
          for i:=k to pred(nextcode) do
            table^[i]:=ch;
        end else begin
          p:=addr(table^[word(k) shr jutbits]);i:=len-tablebits;
          while i<>0 do begin
            if p^[0]=0 then
              begin
                right^[avail]:=0;left^[avail]:=0;p^[0]:=avail;inc(avail);
              end;
            if (k and mask)<>0 then
              p:=addr(right^[p^[0]])
            else
              p:=addr(left^[p^[0]]);
            k:=k shl 1;dec(i);
          end;
          p^[0]:=ch;
        end;
      start[len]:=nextcode;
    end;
end;

procedure readptlen(nn,nbit,ispecial:twobyteint);
var
  i,c,n:twobyteint;
  mask:word;
begin
  n:=getbits(nbit);
  if n=0 then
    begin
      c:=getbits(nbit);
      for i:=0 to pred(nn) do
        ptlen[i]:=0;
      for i:=0 to 255 do
        pttable[i]:=c;
    end else begin
      i:=0;
      while (i<n) do begin
        c:=bitbuf shr (bitbufsiz-3);
        if c=7 then
          begin
            mask:=1 shl (bitbufsiz-4);
            while (mask and bitbuf)<>0 do begin
              mask:=mask shr 1;inc(c);
            end;
          end;
        if c<7 then
          fillbuf(3)
        else
          fillbuf(c-3);
        ptlen[i]:=c;inc(i);
        if i=ispecial then
          begin
            c:=pred(twobyteint(getbits(2)));
            while c>=0 do begin
              ptlen[i]:=0;inc(i);dec(c);
            end;
          end;
      end;
      while i<nn do begin
        ptlen[i]:=0;inc(i);
      end;
      maketable(nn,@ptlen,8,@pttable);
    end;
end;

procedure readclen;
var
  i,c,n:twobyteint;
  mask:word;
begin
  n:=getbits(cbit);
  if n=0 then
    begin

本文关键:数据压缩 -- 源码
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top