1.
float s_decode(unchar *p)
{
   float f1;
   unsigned int uni_i;
   unsigned char n;
   f1=0;
   for(n=0;n<3;n++)
   {
       uni_i=(unsigned int)p[n];
       f1=f1*100+(float)uni_i;
    }
   for(n=p[n];n<6;n++)
      f1=f1/10;
   return f1;
}2.
void s_encode(float f1,uchar *p)
{
   unsigned char i,j,n;
   unsigned int i_i;
   float f2;
   f2=f1;
   for(i=0;i<6;i++)
   {
       if(f2<1.0)
         break;
       else
         f2=f2/10;
    }
   p[3]=i;
   f2=f1;
   for(n=0;n<3;n++)
   {
       for(j=i;j!=2;)
          {
              if(j<2)
              {
                  f2=f2*10;
                   j++;
               }
              else if(j>2)
              {
                 f2=f2/10;
                 j--;
               }
           } 
    }
   i_i=(unsigned int)f2;
   p[n]=(unsigned char)(i_i&0x00ff);
   f2=f2-(float)i_i;
   i=0;
}

解决方案 »

  1.   

    把代码照着 Pascal 的语法规则翻译一下,就可以了,现在忙,帮不了你。呵呵,这个代码应该不难写的。
      

  2.   

    Pascal里怎么定义指针?怎么作类型转换?它的类型转换函数太少了。
      

  3.   

    1 指针定义
    [c] int *P;
    [pascal] P: ^Integer; 2 类型转化
    [c] a = (int)b;
    [pascal] a := Integer(b);
      

  4.   

    function s_decode(p:pchar):single;
    var n:integer;
    begin
      result:=0;
      for n:=0 to 2 do
      begin
        result:=result*100+ord(p[n]);
      end;
      n:=ord(p[3]);
      while n<6 do
      begin
        result:=result/10;
        inc(n);
      end;
    end;procedure s_encode(f1:single;p:pchar);
    var f2:single;i,j,n,i_i:integer;
    begin
      f2:=f1;
      i:=0;
      while i<6 do
      begin
        if f2<1.0 then
          break;
        f2:=f2/10;
        inc(i);
      end;
      p[3]:=chr(i);
      f2:=f1;
      n:=0;
      while n<3 do
      begin
        j:=i;
        while j<>2 do
        begin
          if j<2 then
          begin
            f2:=f2*10;
            inc(j);
          end
          else
          begin
            f2:=f2/10;
            dec(j);
          end;
          inc(j);
        end;
        inc(i);
      end;
      i_i:=trunc(f2);
      p[n]:=chr(i_i and $00ff);
      f2:=f2-i_i;
      i:=0;end;