当前位置: 代码迷 >> WinCE >> C# WinCE 复制文件并使用CRC校验正确性,该怎么解决
  详细解决方案

C# WinCE 复制文件并使用CRC校验正确性,该怎么解决

热度:268   发布时间:2016-04-28 13:54:03.0
C# WinCE 复制文件并使用CRC校验正确性
在WinCE上面用C#写了一个测试程序,动态生成一个几兆的文件,然后用ComputeHash得到hash值。然后复制到SD卡中,再用ComputeHash得到一个复制文件的hash值。对比2个值检验文件的正确性。
我的问题是,同样的代码在WindowsMobile6就可以运行通过。但是放到CE6中就会得到不同的验证码。
C# code
FileStream sf = File.Open(CopiedFile, FileMode.Open);Crc32 crc32 = new Crc32();String hash = String.Empty;foreach (byte b in crc32.ComputeHash(sf)){    hash += b.ToString("x2").ToLower();}sf.Close();if (!hash.Equals(expectedCRC))//TestResult Fail


比如:
Windows Mobile 的结果:
CRCFile=4db08aa4
CopiedCRC=4db08aa4

Windows CE 的结果:
CRCFile=dfec6e7d
CopiedCRC=a8f42e63
应该从哪几个方面去考虑为什么出错?


------解决方案--------------------
建议 LZ 先用小的文件试试算法是否正确?
------解决方案--------------------
文件复制是手工复制还是代码复制?

代码复制的话注意写完要关闭文件的handle
------解决方案--------------------
文件的编码解码格式不同?
------解决方案--------------------
首先,2楼的建议得确定一下,如果是代码复制文件,是否能保证两个文件一样;
其次,要考虑一下平台的差异,比如说两个平台数据存储方式是否一样等。
------解决方案--------------------
要注意 Unicode 与 ASCII 编码。
------解决方案--------------------
问题应该在编码和解码上,都固定使用GB2312吧
------解决方案--------------------
注意编码
  相关解决方案