在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吧
------解决方案--------------------
注意编码