l-huang 发表于 2008-8-22 15:38:48

ASCII转换成一组16进制的数据的时候,数组里就是没有值【已经解决,谢谢各位高手】

我在程序里做运算,把一组ASCII转换成一组16进制的数据,运行的时候发现,程序能够正常执行,但是,存放16进制数据的数组里没有数,单步调试发现,能够运算与赋值,可是数组里就是没有值,这是怎么回事??谢谢高手指点!!

[ 本帖最后由 l-huang 于 2008-9-28 16:12 编辑 ]

cpubbs 发表于 2008-8-22 17:55:27

兄弟将这个程序上传让大家调试一下!

l-huang 发表于 2008-8-22 20:48:05

int CVICALLBACK ReadFromFile (int panel, int control, int event,
                void *callbackData, int eventData1, int eventData2)
{


      //char *t;
   
          

   
    int i,j,k,m,len=0;
       int a,b,d,xbnum,endnum,fnum;
       char f;
       
       char c1,c2;
       unsigned char c3,c4,c;
        switch (event)
                {
                case EVENT_COMMIT:
                  
                   FileSelectPopup ("", "*.dat", "", "读取数据",VAL_LOAD_BUTTON, 0, 0, 1, 0, Rfilename);
                Readfp= fopen(Rfilename, "r");
               FromFile=1;
               
             
             while(!feof(Readfp))
          {
         t=fgetc(Readfp);
         len++;
         }
      
       fclose(Readfp);   
       first=(char   *)malloc(len);
      
   ///去掉枕头及0x
      for(i=18,j=0;i<len;i++,j++)   
       {
         if((t=='0')&&(t=='x'))
         i=i+2;
         first=t;
   
         }
      
      temp= (char   *)malloc(j);
   //去掉空格
      for(k=0,m=0;k<j;k++,m++)   
      {
      if(first==0x0A)               
         k=k+1;
      temp=first;
         }       
      
      free(first);
      
      d=(int)(m/2)+1;
   
       end =(char   *)malloc(d);

       for (a=0,b=0;a<m;a++,b++)   
      {
         c1=0;
         c2=0;
         c3=0;
      if((temp>='0')&&(temp<='9'))               
         c1=temp-'0';
         
      else if((temp>='A')&&(temp<='F'))
         c1=temp-'A'+10;
                
      a++;   
             if(a>=d)break;
      if ((temp>='0')&&(temp<='9'))   //
         c2=temp-'0'; //'0'到'9'   
      else   if   ((temp>='A')&&(temp<='F'))   
          c2=temp-'A'+10; //'A'到'F'
              
         c3=c1*16+c2;
         x=c3;                  //问题处在这里,x里面没有数据,
         if (b>=d)break;
    printf("this is a test %x\n",x); //可是这里却能打印出数据,
      
      }        
   
   
   
      
       }
            
      free(end);
      }
   
        return 0;
}
///下面是原始数据

1651 1 10000 0 28
0x000055AA
0xD73C6F34
0xC7BACF43
0xBD3C5C76
0xDAC120DA
0x833E8562
0x55BD6F21
0x044336D5
0x48435074
0xA442DCF3
0x9A0055AA

cpubbs 发表于 2008-8-23 14:47:03

这个这个。。。。。。。

兄弟还是压缩上传程序吧,这样直接贴出来没有办法查的,太难看出问题了,并且没有办法调试!
页: [1]
查看完整版本: ASCII转换成一组16进制的数据的时候,数组里就是没有值【已经解决,谢谢各位高手】