BYTE U[200];
 CString hexfile;
hexfile=_T("d:\\123.txt");
if(!file.Open (hexfile,CFile::modeReadWrite))   
{   
file.Open(hexfile,CFile::modeCreate|CFile::modeReadWrite);   
}   
file.Write(U,200);   
file.Close(); 
这是我的程序,可是保存后用记事本打开123.txt全是乱码,用ultraedit打开的话是16进制的数据,的确它就是我想要的,可是无法保存出来 ,
为什么我用
file.Write(_T("123"),4);得到的东西就可以直接用txt记事本打开呢 ?
  

解决方案 »

  1.   

    有些字符是不可见字符,当然看起来就是乱码了
    只要数据对就行了,word文档你用记事本打开也是乱码
      

  2.   

    记事本程序打开文档后显示的是字符串,
    所以file.Write(_T("123"),4);得到的东西就可以直接用txt记事本打开
    如果你写入数值,则现实数值对应的字符,但一定要有对应的字符编码才可见
      

  3.   

    楼上的说的有道理 ,好像是要有对应的字符编码才可见。
    我主要是因为这个U是个图片数据,我想把它保存起来用matlab看看这个矩阵图片的效果 ,好像好麻烦啊
    不知道有没有很好的办法 啊 
      

  4.   

    楼主,你存个"1234",可以用TXT看到,但内部的内容实际是 0x31 0x32 0x33 0x34 的ASCII码.
    你可以像下面的代码那样来转.CString strTemp;
    CString strSave = "";
    int iLen = 200;
    for(int i=0;i<200;i++)//全部转成在TXT里可看到的ASCII字符
    {
        strTemp.Format("%x",U[i]);
        strSave += strTemp;
    }
    hexfile=_T("d:\\123.txt");
    if(!file.Open (hexfile,CFile::modeReadWrite))   
    {   
        file.Open(hexfile,CFile::modeCreate|CFile::modeReadWrite);   
    }   
    file.Write(strSave,strSave.GetLength());   
    file.Close();