这段代码转成delphi是什么样的?习惯了c++,一时半会转不过来,不大习惯pascal的指针操作和类型。
BYTE * test(BYTE *src, int len, BYTE *des)
{
BYTE * now;
BYTE *last;
BYTE *temp;
int a;  
if ( len )
  {
    now=src;
    temp=src+57
    last=src+len;
    while ( temp <= last )
    {
      for ( ; temp != now; des += 4 )
      {
        a=(*(now+1))|((*(now+1)|(*now <<8))<<8);
        now+=3;
        *(BYTE *)(des + 3) = table[a & 0x3F];
        a = (unsigned int)a >> 6;
        *(BYTE *)(des + 2) = table[a & 0x3F];
        a = (unsigned int)a >> 6;
        *(BYTE *)(des + 1) = table[a & 0x3F];
        *des = table[(unsigned int)a >> 6];
      }
      *(_BYTE *)des= 13;
      *(_BYTE *)(des + 1) = 10;
      des += 2;
      temp += 57;
    }
  }
  return des;
}

解决方案 »

  1.   

    呵~~,BYTE *在delphi里可以用PByte.
    其他的就容易了.
    function test(src:pbyte; len:integer; des:pbyte):pbyte;
    var
    now,last,temp:pbyte;
    a:integer; 
    begin
     if len>0 then
      begin
        now:=src;
        temp:=src;
         inc(temp,57);
        last:=src;
        inc(last,len);
        while ( Integer(temp) <= integer(last) ) do
          begin
            while Integer(temp) <> integer(now) do
              begin
                
                //a=(*(now+1))|((*(now+1)|(*now <<8))<<8);
                a:=integer(now^);
                a:=a shl 8;
                inc(now);
                a:=a or Integer(now^);
                a:=a shl 8;
                a:=a or integer(now^);//-_-!!,感觉有点累......DELPHI指针操作没有C++这么强大......
                //now+=3;
                inc(now,3);
                //*(BYTE *)(des + 3) = table[a & 0x3F];
                inc(des,3);
                des^=Byte(a and $3F);
                ........ 
                inc(des ,4);
              end;
          end;
      end;
    end;
      

  2.   

    少看了一句,改一下:des^=byte(table[a and $3F]); 
      

  3.   

    感谢,另外
    a = (unsigned int)a >> 6;这个强制类型转成unsigned int在pascal里面是咋样的?
      

  4.   

    UINT: 16bit 
    DELPHI: word.a:=Word(a) shr 6;其实就是取低16位来运算吧.把前面两个字节码去除了.也可以这样操作a:=(a and $0000FFFF) shr 6;