计算16x16点阵汉字在字库里的位置 
   const
fnode=161; {不同的字库,有不同的起始值}{UCDOS,GHOS,213,天汇汉字系统,HZK12,fnode=161} {CXDSO,汉字部分,fnode=162;符号部分(1--13区),fnode=161} 
varhz:string; {一个汉字占两个字节,所以作为字符串处理} offset:longint; {该汉字在字库里的位置,即偏移量} i,k:integer; 
...
k:=length(hz);
i:=1;
while (i < k) do
beginoffset:=(ord(hz[i])-fnode)*94+(ord(hz[i+1])-161); offset:=offset*32; ... i:=i+2; 
end;
... 
谁能帮我翻译成C语言啊 我没学过dephi  非常感谢 

解决方案 »

  1.   

    这个可以帮忙,但太费脑筋了,你事先最好付点脑力补偿营养费,先翻译一半:
       string hz;
       longint offset;
       integer i,k;
       while (i < k) do 
       {
         offset = (ord(hz[i])-fnode)*94+(ord(hz[i+1])-161); //抱歉Ord()函数忘记在C里是怎么表  示的了)
         offset = offset*32; 
         i += 2;
       }
       
      

  2.   

    define fnode 161
    ...
    {
      unsigned char *hz;
      longint offset;
      int i,k;
      k = strlen(hz);
      i =1;
      while(i<k)
      {
        offset = (hz[i]-fnode)*94 + hz[i+1] - 161;
           //c自己可以进行类型转换,不需要相应的 ord  函数    offset *= 32;
        ...
        i += 2;  }
    }
      

  3.   

    #include <string.h> //调用strlen()#define fnode 161int test(char *str)
    {
        char *hz;
        long offset;
        int i,k;
        
        hz=str;
        k=strlen(hz);
        i=1;    while (i<k)
        {
      

  4.   

    #include <string.h> //调用strlen()#define fnode 161int test(char *str)
    {
        char *hz;
        long offset;
        int i,k;
        
        hz=str;
        k=strlen(hz);
        i=1;    while (i<k)
        {
           offset=(h[i]-fnode)*94+(h[i+1]-fnode);
           offset<<=4;
           ...
           i+=2;
         }
        return k;
    }