lpBuf中已经存得有数据了,怎么样挨个访问呢?就像BYTE * buf 可以用buf[0]...等访问,但lpBuf不行。用BYTE * tmp = (BYTE *)lpBuf来强制转换后,tmp中只有128个数据可以访问,而实际上lpbuf中数据大小应该为160058字节。请高手指教,谢谢!

解决方案 »

  1.   

    用BYTE * tmp = (BYTE *)lpBuf来强制转换后,tmp中只有128个数据可以访问,而实际上lpbuf中数据大小应该为160058字节。
    ????
    强制类型转换并不会影响内容。
      

  2.   

    但是好像是影响的,我在调试时发现的。lpBuf里放的是数码相机刚拍完下载下来的数据。
    SaveFileData(strFile,(LPBYTE)lpBuf,m_lnImageSize);这句可以把数据正确的写到硬盘上。SaveFileData(LPCTSTR lpszFileName,PBYTE pBuf, DWORD dwSize)
    {     CFile file(lpszFileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
          file.Write(pBuf,dwSize);
          file.Close();
    }我现在像把其中的数据转为BYTE *型的,程序如下:
    BYTE * TmpBuf,*tmp;
    tmp = (BYTE *)lpBuf;TmpBuf = new unsigned char[pTransInfo->m_lnImageSize];
    for(int i=0;i<pTransInfo->m_lnImageSize;i++)

       TmpBuf[i] = tmp[i];
    }
    但在循环里老是出错,i=128时即弹出信息告诉我非法访问了。请问楼上大哥有啥办法解决?谢谢!
      

  3.   

    你调试看看m_lnImageSize和pTransInfo->m_lnImageSize的值是否是一样的