最近编一个程序,一次读file1文件8字节,变换为某个数,将此数按8字节写入另一文件file2。读file2,变为原数据,写回file1。file1文件末尾会多几个0。如果是Word或Ecel,打开就会报错误。怎么解决?

解决方案 »

  1.   

    用二进制方式。好比说,以一次读写2字节为例:
    __int16 buf;file1.Read(&buf, 2);
    buf = buf ^ 0xabcd;
    file2.Write(&buf, 2);
    //以上为加密__int16 buf;file2.Read(&buf, 2);
    buf = buf ^ 0xabcd;
    file1.Write(&buf, 2);
    //以上为解密
      

  2.   

    txt文件如为3字节的,解出来为4字节,二进制查看器中看到后面多了个00如为偶字节的,正常。考虑与文件长度奇、偶有关?难道要先读完一遍文件,将最后一次读到的不足2字节的数量写入文件中。解密时先读这个数,决定最后一次写入时是否去掉前面的00?
      

  3.   

    文本型文件可以直接打开。WORD、Excel有时报错,有时可直接打开。图片格式可直接打开。
      

  4.   

    int file1_len = file1.GetLength();if (file1_len % 8)
    file2.Write(&file1_len, 1);//加密文件头部先写入剩余字节
    继续读剩余数据进行加密解密时
    int file2_len;
    file2.Read(&file2_len, 1);
    ...
    解密完写数据之前
    if (file2_len)
      file1.Write(&data, file2_len);