CFile  fr,fw;
fr.Open(_T(strPath[0]),CFile::modeRead|CFile::typeBinary);  
fw.Open(_T("1.txt"),CFile::modeWrite|CFile::typeText|CFile::modeCreate); 



char *pRead = new char[fr.GetLength()];
            char pBuf[4] = {0};
char pbuffer[10000];
char *pbuffer1=new char[10000];
if (int nRead = fr.Read(pRead, fr.GetLength()))
{
for (int n = 0; n < nRead; )
{
*pbuffer=pRead[n];
*pbuffer1=pRead[n+1];
strcat(pbuffer,pbuffer1);//将这两个字节的二进制连在一起
sprintf(pBuf, "%02d ", *pbuffer);
fw.Write(pBuf, 3);
printf("\r\n");  
n++;
n++;
 }
}
fr.Close();
fw.Close();这样做的话,正数可以,一到负数就提示出错了,请大家帮帮忙

解决方案 »

  1.   

    CString str = "123";
    int iData = atoi(str);
      

  2.   

    楼主用C写的话的确不方便。
    对于负数,可以这么做:
    先将这个数进行取反,得到对应的正数,
    在显示时,再显示成这样sprintf(pBuf,"-%02d,*pbuffer);
    可以试试。
      

  3.   

    我的文件是补码表示,这个我看过了
    文件格式:
    前33736个字节是文件头,这个用Seek可以跳过,剩下的都是数据,两个字节表示一个采样的数据.
      

  4.   

    pbuffer[0]=pRead[n];
    pbuffer[1]=pRead[n+1];
    //strcat(pbuffer,pbuffer1);//将这两个字节的二进制连在一起
    sprintf(pBuf, "%02d ",*(short int*)pbuffer);
      

  5.   

    哦, 还有,pBuf长度要定义成5...
      

  6.   

    这个问题我刚刚碰到了。
    很简单,如果用ASCII码显示的话,就一定是正数。把你所有的变量都定义成unsigned的。
      

  7.   

    可是我的二进制文件中有负数,例如 ff ff (当然,在文件中是二进制表示的)代表的-1,fc ff代表-4,在该二进制文件中负数用补码表示,每个数字用两个字节表示.高位在后,低位在前.